本文系10 Minutes to pandas文檔的個(gè)人學(xué)習(xí)摘要,不包含全部內(nèi)容。
0. 數(shù)據(jù)結(jié)構(gòu)介紹
pandas使用兩種重要的數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。
- Series
是一種類似于一維數(shù)組的對象??梢允褂脭?shù)字索引和字符索引。我們可以通過values和index屬性獲取序列的索引和值列表。
創(chuàng)建:
我們還可使用python的字典來初始化創(chuàng)建一個(gè)series,字典的鍵作為序列的索引,值作為對應(yīng)的值。
在pandas中,series一個(gè)最重要的功能是:在算術(shù)運(yùn)算中會自動對齊相同索引的數(shù)據(jù)。
s.value_counts() 統(tǒng)計(jì)元素出現(xiàn)次數(shù)
序列有一個(gè)**'str' **屬性,它可以使用常見的string函數(shù),如 s.str.lower()
- DataFrame
DataFrame是pandas中最重要、使用最頻繁的數(shù)據(jù)結(jié)構(gòu),這次的學(xué)習(xí)筆記內(nèi)容也都是對這種數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作。它是一種表格型數(shù)據(jù),既有行索引又有列索引,本質(zhì)是二維Series。創(chuàng)建DataFrame的方法很多 ,最簡單的是傳入一個(gè)列表或numpy數(shù)組組成的字典。
下面著重介紹dataframe的相關(guān)操作
1. 創(chuàng)建dataframe:
查看df的信息可以選用這幾個(gè)函數(shù): df.head(), df.tail(), df.describe(),,其中**describe() **顯示df的各種統(tǒng)計(jì)信息(平均數(shù),中位數(shù),標(biāo)準(zhǔn)差,最值,分位數(shù)),在數(shù)據(jù)挖掘處理數(shù)據(jù)時(shí)會用到。df.info()顯示其屬性信息
2. 檢索數(shù)據(jù)
dataframe的檢索可以從兩方向進(jìn)行:行和列。我們可以使用行列標(biāo)簽進(jìn)行檢索。
2.1 Getting:
df['a'] <==> df.a返回a列數(shù)據(jù)值,是序列類型
df[0:3]返回前三行,dataframe類型2.2 按標(biāo)簽檢索:df.loc[rows_number, columns_list]
注 因?yàn)樾心J(rèn)數(shù)字索引,這里1:4應(yīng)理解為label,不是position。
- 2.3 按位置檢索: df.iloc[row_number, col_number] ,要求給出的參數(shù)必須是整型,即第幾行第幾列。
- 2.4 布爾索引,常用這種方法來篩選數(shù)據(jù)
- 2.5 Setting:
df.at[] & df.iat()類似于df.loc[] & df.iloc[]。個(gè)人理解是專門用來修改值得吧(雖然loc/iloc也可以 (:
3. 缺失數(shù)據(jù)處理
pandas使用 np.nan(not a numeric)標(biāo)識缺失數(shù)據(jù),NaN不會參與后續(xù)計(jì)算。
-
3.1 直接丟棄
df.dropna(how='any', axis = 0)
axis:指定丟棄行(0)或列(1)
how:可選all或any, 默認(rèn)any。與axis共同作用
舉個(gè)例子, df.dropna(how='any', axis = 0) 只要某行數(shù)據(jù)中有NaN,那么就刪除這一行。all要求全部是NaN才刪除。
- 3.2 填充
df.fillna(value=x)用x填充缺少的數(shù)據(jù)。還可以使用插值法、Imputer或回歸預(yù)測來填充這些數(shù)據(jù)。
- 3.3 檢查df中有哪些NaN:
pd.isna(df)返回一個(gè)布爾型的DataFrame
4. 操作
- 4.1 統(tǒng)計(jì)信息: df.mean() / sum() / min()/ max()/ std()/ var()/ corr()/ cov()。
- 4.2 函數(shù)式:apply函數(shù),比如
df.apply(np.cumsum()),df.apply(lambda x: x.max() - x.min())
5. 合并
5.1 concat函數(shù),C風(fēng)格
pd.concat([df1, df2])5.2 join函數(shù),SQL風(fēng)格
5.3 append,
df.append(df1, ignore_index=True)分組, 分組在數(shù)據(jù)分析中很常見
df.groupby('a'), 和SQL里的groupby有點(diǎn)像。
groupby函數(shù)處理涉及到一下幾個(gè)步驟:
- 按給定條件劃分?jǐn)?shù)據(jù)為組
- 對每個(gè)組應(yīng)用函數(shù)處理
- 將處理結(jié)果組合到某種數(shù)據(jù)結(jié)構(gòu)
關(guān)于分組的知識,以后詳談~嘻嘻
6. 后續(xù)的時(shí)間序列,分類,Plotting的內(nèi)容接著寫。
簡書小白,第一次寫文章,歡迎大家指正。bye~