什麼是pandas
pandas在Numpy的基礎上優化了數據結構,在數據的儲存,讀取,分割,轉換等方面進行了改進,使得操作更加容易簡,pandas提供了三種數據對象,Series(用於保存一維類的數據),DataFrame(用於保存二維類的數據)和Panel(用於保存三維或者可變維度的數據)。
安裝pandas
可以使用pip install pandas來進行安裝。
Series使用方法
記得導入import pandas as pd (as是重命名是意思,下面都是使用的pd)
基本方法
pandas.Series(data=None,dtype=None,name=None,copy=False,fastpath=False)
a = pd.Series(data=[100,200,300])
b = pd.Series(1,index=['a','b','c'])
c = pd.Series(['a','b','c'],index=[1,2,3])
print(a)
print(b)
print(c)
print(a.index)
print(a.values)
運行結果:
0 100
1 200
2 300
dtype: int64
a 1
b 1
c 1
dtype: int64
1 a
2 b
3 c
dtype: object
RangeIndex(start=0, stop=3, step=1)
[100 200 300]
可以看出來。Series索引默認爲數字,當然可以使用index的方法去改變原來位置的索引的值,index的值不僅可以是字符串也可以是字符串組成的列表,而且可以使用index來獲取標籤索引或者使用values來獲取元素。
DataFrame使用方法
基本方法
pandas.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)
df = pd.DataFrame(np.arange(12).reshape(3,4))
print(df)
print(df.index) #輸出列
print(df.columns) #輸出行
print(df.values) #輸出value
df.index = ['a','b','c'] #修改行標籤索引的值
df.columns = ['a','b','c','d'] #修改列標籤索引的值
print(df)
運行結果:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
RangeIndex(start=0, stop=3, step=1)
RangeIndex(start=0, stop=4, step=1)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
a b c d
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
你甚至可以給index與columns命名:a.index.name與a.columns.name。
注意一點就是,有多行跟列你修改的值就要有多少個,多或少都會報錯。
數據格式轉化
a = {'money':[100,109.2,198,158,134.9],
'people':[2,3,4,5,6]} #{field:array-like}
print(pd.DataFrame.from_dict(a)) #默認的是orient=“columns”
運行結果:
money people
0 100.0 2
1 109.2 3
2 198.0 4
3 158.0 5
4 134.9 6
這裏面orient參數有兩個值,默認是爲columns意思就是是字典的key是列的標籤索引,如果orient爲index表示,字典的key就是行的標籤索引。
a = {'money':{'a':100,'b':109.2,'c':198,'d':158,'e':134.9},
'people':{'a':2,'b':3,'c':4,'d':5,'e':6}} #類型{field:dict}
print(pd.DataFrame.from_dict(a,orient="index")) #默認的是orient=“columns”,這裏我們把key賦值給行的標籤索引
運行結果:
a b c d e
money 100 109.2 198 158 134.9
people 2 3.0 4 5 6.0
注意columns是行的標籤索引,index是列的標籤索引
DataFrame保存爲csv文件
第一種方法
a = {'money':[100,109.2,198,158,134.9],
'people':[2,3,4,5,6]} #類型#{field:array-like}
b = pd.DataFrame.from_dict(a) #默認的是orient="columns"
b.to_csv("a.csv",columns=['money','people'],index_label=['a','b','c','d','e'],header=False)
第二種方法
a = {'money':[100,109.2,198,158,134.9],
'people':[2,3,4,5,6]} #類型#{field:array-like}
b = pd.DataFrame.from_dict(a) #默認的是orient="columns"
pd.DataFrame.to_csv(b,"a.csv",columns=['money','people'],index_label=['a','b','c','d','e'],header=False)
Panel對象
構造函數
pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None,copy=False,dtype=None)
實現代碼
a = np.random.rand(3,4,5)
#b = pd.Panel(a)
b = pd.Panel(data=a,items=['itema','itemb','itemc'],major_axis=['a','b','c','d'],minor_axis=['one','two','three','four'])
print(a.shape)
print(b['a'])
print(b['b'])
print(b.major_xs('a'))
print(b.minor_xs('one'))
可參考Panel的使用方法