第六篇,數據分析之pandas的常用數據對象之Series,DataFrame,Panel

什麼是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的使用方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章