一、Pandas
1.1 文件讀取
import pandas as pd
df=pd.read_csv("文件位置")
1.2 DataFrame 和 Series
創(chuàng)建: s=pd.Series(data,index=index)
????其中勇蝙,data可以是:字典,數(shù)組除盏,列表,整數(shù)的值挫以,index可自定義或省略(即默認(rèn))
? ? ? ? ? ? p=pd.DataFrame(data,columns=...,index=...)
? ? 其中者蠕,data可以是:字典,二維數(shù)組掐松,series踱侣,dataframe
1.3 常用的操作
1.3.1 屬性
df.columns ?? 查看列名
df.index ?? 查看索引
df.dtypes ?? 查看數(shù)據(jù)類型
df.shape ?? 返回列數(shù)和行數(shù)
df.size ?? 返回行數(shù)和列數(shù)的乘積
1.3.2 方法
df.head(N) ?? 返回前N列
df.tail(N) ?? 返回后N列
df.rename() ? ? ? 更改列名,括號(hào)內(nèi)為字典格式大磺,即 舊:新
df.replace() ?? 更改值
df.value_counts() ?? 返回不同的值及其出現(xiàn)的次數(shù)
df.sort_values(by=...) ?? 按...進(jìn)行排序
df.describe() ?? 返回?cái)?shù)值型變量的統(tǒng)計(jì)數(shù)據(jù)
max/min/mean/sum ?? 返回 最大值/最小值/平均值/和
1.3.3 數(shù)據(jù)選取/添加/刪除
1.選取
df['列名'] ? ? 或 ? ?? df.列名
df[['列名1','列名2‘]]
2.增加
df.新增列名=值 ? ? ?? 或 ? ? ?? df.新增列名=值
條件篩選
df[條件]
3.刪除
del df['列名]
1.4 Missing Value
檢測(cè)缺失值抡句,返回布爾值
pd.isnull(df) ? ? ?? 或 ? ? ?? pd.isnull(df.列名)
刪除缺失值
df.dropna(axis=0或1) ??
填充缺失值
df.fillna(value=填充內(nèi)容)
1.5 文本數(shù)據(jù)
s是一個(gè)Series
s.str.strip() ?? 去除首尾空格
s.str.upper() ?? 變?yōu)榇髮?/p>
綜合運(yùn)用:s[s.str.strip().str.endswith('a')]
1.6 ?? 索引選取
1.6.1 loc
loc是基于標(biāo)簽的,允許的輸入為:
? ? 1.單個(gè)標(biāo)簽杠愧,如:5待榔,'a'
? ? 2.一個(gè)列表或標(biāo)簽數(shù)組,如: ['a','b','c']
? ? 3.一個(gè)標(biāo)簽的切片流济,如: 'd' : 'f'
? ? 4.一個(gè)布爾數(shù)組
? ? 5.具有一個(gè)參數(shù)的可調(diào)用函數(shù)
例:
? ? df.loc[0:5] ? ?
? ? df.loc[1]
? ? df.loc[0,4,6]
? ? df.loc[條件]
1.6.2 iloc
iloc 是基于整數(shù)位置:
? ? 1.一個(gè)整數(shù) 5
? ? 2.一個(gè)整數(shù)列表[4,3,0]
? ? 3.一個(gè)區(qū)間? 1:7
? ? 4.一個(gè)布爾數(shù)組
? ? 5.具有一個(gè)參數(shù)的可調(diào)用函數(shù)
loc與iloc的區(qū)別:
? ? loc選行是通過索引列的值來選取
? ? iloc選行是通過未至整數(shù)來選取
例:
? ? df.loc[ :10 , ['列名1'究抓,'列名2'] ] ??
? ? df.iloc[ :10,? [0,1]]
? ? 逗號(hào)后面為選擇的列
1.6.3 ?? 數(shù)據(jù)過濾(loc的應(yīng)用)
? ? df.loc[過濾條件]
? ? 類似于SQL中的where功能
1.6.4 多重索引
1.創(chuàng)建索引
new_df=df.set_index(keys=['列名1','列名2'])
其中,參數(shù)append=True表示保留原索引
? ? ? ? ?? 參數(shù)drop=True表示丟棄被設(shè)為索引的列
刪除索引 ?? new_df.reset_index
2.對(duì)索引排序
new_df.sort_index(na_position='last',inplace=True)
其中袭灯,參數(shù)na_position表示如果存在空值則放在最后
? ? ? ? ?? 參數(shù)inplace表示是否在原數(shù)據(jù)中保存更改
3.用slice對(duì)多重索引進(jìn)行操作
? ? 例:
new_df.loc[(slice(0,100),['索引列2值1','索引列2值2','索引列2值3'],slice(None)) ,? :? ]
其中绑嘹,前面分別是對(duì)三個(gè)索引列的操作稽荧,逗號(hào)后面是columns
4. IndexSlice
???? IndexSlice是一種更接近自然語法的用法,可以替換slice
例: idx=pd.IndexSlice
new_df.loc[idx[ : , : , : ], : idx['列名1','列名2']
其中工腋,逗號(hào)前面是對(duì)三個(gè)索引列的操作姨丈,逗號(hào)后面是對(duì)columns的操作,注意,逗號(hào)后面加上冒號(hào)返回的是一個(gè)表格擅腰,不加冒號(hào)返回一個(gè)列表
1.7 分組計(jì)算
三個(gè)步驟:1.根據(jù)一些標(biāo)準(zhǔn)將數(shù)據(jù)分組(spliting)
? ? ? ? ? ? ? ? ?? 2.對(duì)分組數(shù)據(jù)作用一些函數(shù)(applying)
? ? ? ? ? ? ? ? ?? 3.將結(jié)果組合返回一個(gè)數(shù)據(jù)結(jié)構(gòu)蟋恬,如DataFrame (combining)
在第二個(gè)步驟中:1.aggregation:統(tǒng)計(jì)特征,如avg,max,min,sum
? ? ? ? ? ? ? ? ? ? ? ? ? ?? 2.transformation: 轉(zhuǎn)換趁冈,如填充缺失值歼争、標(biāo)準(zhǔn)化
? ? ? ? ? ? ? ? ? ? ? ? ? ?? 3.filtration:對(duì)組進(jìn)行篩選
分組:grouped=df.groupby('列名')
grouped.size() ?? 有多少組,每組有多少條數(shù)據(jù)
grouped.groups ?? 每組的詳細(xì)情況
len(grouped) ?? 小組的個(gè)數(shù)
1.7.1 統(tǒng)計(jì)計(jì)算
1.單個(gè)統(tǒng)計(jì)量計(jì)算
?grouped.mean()
grouped.sum()
grouped.std()
grouped['列名'].sum()
2.使用agg函數(shù)進(jìn)行多個(gè)統(tǒng)計(jì)量計(jì)算
grouped.agg([np.mean,np.sum,np.std])
3.不同的列應(yīng)用不同的統(tǒng)計(jì)量
grouped.agg({'列名1':np.mean,'列名2':np.sum,...})
1.7.2 transformation
? ? 對(duì)null填充值
z_score=lambda s : (s-s.mean())/s.std()
grouped[['列名1','列名2']].transform(z_score)
1.7.3 filteration
grouped.filter(lambda g : len(g) > 1)
1.8 表聯(lián)結(jié)
1.8.1 結(jié)構(gòu)完全一樣的表
result = pd.concat([df1,df2,df3])
1.8.2? merge函數(shù)
1.在一個(gè)主鍵上join
result = pd.merge(left,right,how=left/right/outer,on='key')
2. 在多個(gè)主鍵上join
當(dāng)兩個(gè)表主鍵列名都為key1,key2時(shí)
result = pd.merge(left,right,how=left/right/outer,on=['key1','key2'])
當(dāng)兩個(gè)表主鍵列名分別為key1,key2和key3渗勘,key4時(shí)
result = pd.merge(left,right,how=left/right/outer,left_on=['key1','key2'],right_on=['key3','key4'])
注:主鍵位置要相對(duì)應(yīng)
3.在索引上join時(shí)
key1,key2是left的索引列
key1,key2是right的索引列
result = pd.merge(left,right,how=left/right/outer,left_index=True,right_index=True)
4.索引列和column join
key1,key2 為left的索引列
key1,key2 為right的columns
result = pd.merge(left,right,how=left/right/outer,left_index=True,right_on=['key1','key2'])
1.9? 數(shù)據(jù)透視表
1.9.1 pivot_table
參數(shù): data ? 數(shù)據(jù)源? 沐绒; ??
????????????values ?? 值? ;
? ? ? ? ? ? index? 索引列(首列)旺坠;
? ? ? ? ? ? columns ?? 行乔遮;
? ? ? ? ? ? aggfunc ? ? 作用的函數(shù);
pd.pivot_table(df,values=['列名']取刃,index=['列名'],aggfunc=[np.sum,np.std,...]) ? ?
tips:未完待續(xù)蹋肮、出刷、、