python初探——pandas使用


一、簡介  

  pandas 是基於NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標准的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法,pandas為時間序列分析提供了很好的支持。

二、數據結構

  • Series:一維數組,與Numpy中的一維array類似。二者與Python基本的數據結構List也很相近,其區別是:List中的元素可以是不同的數據類型,而Array和Series中則只允許存儲相同的數據類型,這樣可以更有效的使用內存,提高運算效率。
  • Time- Series:以時間為索引的Series
  • DataFrame:二維的表格型數據結構。很多功能與R中的data.frame類似。可以將DataFrame理解為Series的容器。以下的內容主要以DataFrame為主。
  • Panel :三維的數組,可以理解為DataFrame的容器。
Series 和 DataFramePandas自己獨有的基本數據結構。應該注意,它固然有着兩種數據結構,因為它依然是 Python 的一個庫,所以,Python 中有的數據類型在這里依然適用,也同樣還可以使用類自己定義數據類型。

三、使用

1、series

# data_structure.py

import pandas as pd
import numpy as np

series1 = pd.Series([1, 2, 3, 4])
print("series1:\n{}\n".format(series1))
series1:
0    1
1    2
2    3
3    4
dtype: int64 #此行表示數據的類型為int64,輸出中第一行是index,第二行是value

我們可以分別打印出Series中的數據和索引:

# data_structure.py

print("series1.values: {}\n".format(series1.values))

print("series1.index: {}\n".format(series1.index))
series1.values: [1 2 3 4]  #默認的index是從0開始的數字形式
series1.index: RangeIndex(start=0, stop=4, step=1)
索引可以是任何數據類型,例如字符串:
# data_structure.py

series2 = pd.Series([1, 2, 3, 4, 5, 6, 7],
    index=["C", "D", "E", "F", "G", "A", "B"])
print("series2:\n{}\n".format(series2))
print("E is {}\n".format(series2["E"]))
series2:
C    1
D    2
E    3
F    4
G    5
A    6
B    7
dtype: int64

E is 3

2、DataFrame

不指定數據內容,創建一個4*4的DataFrame

# data_structure.py

df1 = pd.DataFrame(np.arange(16).reshape(4,4))
print("df1:\n{}\n".format(df1))

輸出如下(列叫做column,行叫做index,都是從0開始的整數):

df1:
    0   1   2   3
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15

指定column和index來創建DataFrame:

# data_structure.py

df2 = pd.DataFrame(np.arange(16).reshape(4,4),
    columns=["column1", "column2", "column3", "column4"],
    index=["a", "b", "c", "d"])
print("df2:\n{}\n".format(df2))

結果如下:

df2:
   column1  column2  column3  column4
a        0        1        2        3
b        4        5        6        7
c        8        9       10       11
d       12       13       14       15

指定數據列創建DataFrame:

# data_structure.py

df3 = pd.DataFrame({"note" : ["C", "D", "E", "F", "G", "A", "B"],
    "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})
print("df3:\n{}\n".format(df3))

結果如下(DataFrame的不同列可以是不同的數據類型):

df3:
  note weekday
0    C     Mon
1    D     Tue
2    E     Wed
3    F     Thu
4    G     Fri
5    A     Sat
6    B     Sun

添加或者刪除列:

# data_structure.py

df3["No."] = pd.Series([1, 2, 3, 4, 5, 6, 7])
print("df3:\n{}\n".format(df3))

del df3["weekday"]
print("df3:\n{}\n".format(df3))

結果如下:

df3:
  note weekday  No.
0    C     Mon    1
1    D     Tue    2
2    E     Wed    3
3    F     Thu    4
4    G     Fri    5
5    A     Sat    6
6    B     Sun    7

df3:
  note  No.
0    C    1
1    D    2
2    E    3
3    F    4
4    G    5
5    A    6
6    B    7

3、Index對象與數據訪問

 

  • loc:通過行和列的索引來訪問數據(定義時的索引)。df.ioc[1:3,1:5],取出第2行至第3行的第2列至第5列的數據。注意不包括第3行,第5列。df.iloc[[1,2],[2,3]]取出第2行和第3行的第3列和第4列數據。
  • iloc:通過行和列的下標來訪問數據(從0到N-1的整數,是指行和列的位置)。df.ioc[“a”:“f”,“A”:“C”],取出a行至f行的A列至C列的數據。注意包括f行和C列。df.iloc[[”a“,”b“],[A”“,”B“]]取出a行和b行的A列和B列數據。

 

# data_structure.py

print("Note C, D is:\n{}\n".format(df3.loc[[0, 1], "note"]))  #訪問行索引是0和1,列索引是note的元素
print("Note C, D is:\n{}\n".format(df3.iloc[[0, 1], 0]))    #訪問行下標是0和1,列下標是0的元素

結果如下(對於df3來說,行下標和行索引是一樣的):

Note C, D is:
0    C
1    D
Name: note, dtype: object

Note C, D is:
0    C
1    D
Name: note, dtype: object

4、另外pandas還支持對各種類型文件的操作,對無效值和字符串的處理等操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM