Python中pandas模塊解析


一、數據結構

Pandas基於兩種數據類型: series 與 dataframe 。

1、Series

一個series是一個一維的數據類型,其中每一個元素都有一個標簽。類似於Numpy中元素帶標簽的數組。其中,標簽可以是數字或者字符串。

import numpy as np 
import pandas as pd 
s = pd.Series([1, 2, 5, np.nan, 6, 8]) 
print(s) 
'''
輸出:
0    1.0 
1    2.0 
2    5.0 
3    NaN 
4    6.0 
5    8.0 
dtype: float64 
'''

2、DataFrame

一個dataframe是一個二維的表結構。Pandas的dataframe可以存儲許多種不同的數據類型,並且每一個坐標軸都有自己的標簽。你可以把它想象成一個series的字典項。

#創建一個 DateFrame:
#創建日期索引序列 
dates =pd.date_range('20130101', periods=6) 
print(type(dates)) 

#創建Dataframe,其中 index 決定索引序列,columns 決定列名 
df =pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD')) 
print(df)

'''
輸出:
<class 'pandas.core.indexes.datetimes.DatetimeIndex'> 
                   A         B         C         D 
2013-01-01  0.406575 -1.356139  0.188997 -1.308049 
2013-01-02 -0.412154  0.123879  0.907458  0.201024 
2013-01-03  0.576566 -1.875753  1.967512 -1.044405 
2013-01-04  1.116106 -0.796381  0.432589  0.764339 
2013-01-05 -1.851676  0.378964 -0.282481  0.296629 
2013-01-06 -1.051984  0.960433 -1.313190 -0.093666 
'''

#字典創建 DataFrame
df2 =pd.DataFrame({'A' : 1., 
   'B': pd.Timestamp('20130102'), 
   'C': pd.Series(1,index=list(range(4)),dtype='float32'), 
   'D': np.array([3]*4,dtype='int32'), 
   'E': pd.Categorical(["test","train","test","train"]), 
   'F':'foo' }) 
print(df2) 

'''
輸出:
     A          B    C  D      E    F 
0  1.0 2013-01-02  1.0  3   test  foo 
1  1.0 2013-01-02  1.0  3  train  foo 
2  1.0 2013-01-02  1.0  3   test  foo 
3  1.0 2013-01-02  1.0  3  train  foo  
'''

二、簡單運用

1.  導入模塊

import pandas as pd
import numpy as np

2.  讀取excel文件

df = pd.read_csv(path='file.csv')

'''
參數:header=None 用默認行名,0,1,2,3...
names=['A', 'B', 'C'...] 自定義列名
index_col='A'|['A', 'B'...] 給索引列指定名稱,如果是多重索引,可以傳list
skiprows=[0,1,2] 需要跳過的行號,從文件頭0開始,skip_footer從文件尾開始
nrows=N 需要讀取的行數,前N行
chunksize=M 返回迭代類型TextFileReader,每M條迭代一次,數據占用較大內存時使用
sep=':'數據分隔默認是',',根據文件選擇合適的分隔符,如果不指定參數,會自動解析
skip_blank_lines=False 默認為True,跳過空行,如果選擇不跳過,會填充NaN
converters={'col1', func} 對選定列使用函數func轉換,通常表示編號的列會使用(避免轉換成int)
dfjs = pd.read_json('file.json') 可以傳入json格式字符串
dfex = pd.read_excel('file.xls', sheetname=[0,1..]) 讀取多個sheet頁,返回多個df的字典
'''
#df.to_csv()

3.     查詢數據

df.shape                        #顯示數據的多少行和多少列
df.dtypes                       #顯示數據的格式
df.columns                      #顯示數據的所有列名
df.head(n)                      #顯示數據的前n=5行
df.tail(n)                      #顯示數據的后n=5行
df.head(1)[‘date’]            #獲取第一行的date列
df.head(1)[‘date’][0]         #獲取第一行的date列的元素值
df.describe(include='all')      # all代表需要將所有列都列出
df.columns.tolist()             #把列名轉換為list
df.T                            #對數據的轉置:
df.notnull()                    #df的非空值為True
df.isnull()                     #isnull是Python中檢驗空值的函數,返回的結果是邏輯值,包含空值返回True,不包含則返回False。可以對整個數據表進行檢查,也可以單獨對某一列進行空值檢查。  
df[“列名”]                    #返回這一列(“列名”)的數據
df[[“name”,”age”]]      #返回列名為name和 age的兩列數據
df[‘列字段名’].unique()   #顯示數據某列的所有唯一值, 有0值是因為對數據缺失值進行了填充
df = pd.read_excel(file,skiprows=[2] )      #不讀取哪里數據,可用skiprows=[i],跳過文件的第i行不讀取
df.loc[0]              #使用loc[]方法來選擇第一行的數據
df.loc[0][“name”]     #使用loc[]方法來選擇第一行且列名為name的數據
df.loc[2:4]             #返回第3行到第4行的數據
df.loc[[2,5,10]]        #返回行標號為2,5,10三行數據,注意必須是由列表包含起來的數據。
df.loc[:,’test1’]     #獲取test1的那一列,這個冒號的意思是所有行,逗號表示行與列的區分
df.loc[:,[‘test1’,’test2’]]     #獲取test1列和test2列的數據
df.loc[1,[‘test1’,’test2’]]     #獲取第二行的test1和test2列的數據
df.at[1,’test1’]      #表示取第二行,test1列的數據,和上面的方法類似
df.iloc[0]              #獲取第一行
df.iloc[0:2,0:2]        #獲取前兩行前兩列的數據
df.iloc[[1,2,4],[0,2]] #獲取第1,2,4行中的0,2列的數據

 

df 


免責聲明!

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



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