Pandas常用語法
學習筆記
Pandas是Python的一個數據處理與資料分析函式庫
網路上也擁有非常豐富的資源,方便一般人入門
而在使用Pandas操作數據時,內容看起來就像在看資料庫一樣。所以使用上非常的親民
我個人認為Pandas是利用Python做數據分析時不可或缺的工具,沒有Pandas就沒有人會用Python做數據分析了。
而我最近因為在公司做了一個資料分析的專案,因此也寫了一下Pandas
自從研究所畢業之後就沒再碰過,實在有點陌生,雖然知道自己要做哪些處理,但執行時就是一直抱錯
所以這邊就來幫自己紀錄一下Pandas的各種語法&寫法:
1.將資料轉成DataFrame
ps. dataframe就是Pandas的數據顯示資料結構,在使用Pandas時幾乎都是先將資料建立成dataframe,在對資料做其他的處理
直接建立空的dataframe:
df = pd.DataFrame()
或者將資料讀進來
df = pd.read_csv('XXX.csv')
2. 更新column名稱
df.rename(columns = {'舊的名稱': '新的名稱'}, inplace=True)
inplace是要不要 return 新的dataframe,這邊設 True 就不需要 df = df.rename()
3.讀取&存成csv
df = pd.raad_csv('xxxx.csv')
df.to_csv('xxx.csv')
4. 透過column尋找特定的值
df.loc[row的索引, column的索引],如果寫:代表從X~Y之間,:後面沒接代表一直到最後
df.loc[:, 'A':'C']
df.loc[['a', 'd',], :]
5. 留下 or 刪除特定的column
df
= df.drop(['B', 'C'], axis=1)
df = df[['a','d'
]]
6.合併相同column的df
df = pd.concat([df1, df2, df3....])
7.透過關聯合併df
df = pd.merge(left=df1, right=df2, how="join方法", on="透過哪個欄位")
或者
df = df.merge(df1, left_on='df的key', right_on='df1的key', how='join方法')
8.for loop
for index, row in df.iterrows():
9. to_datetime:日期格式
to_datetime:可以將欄位的內容轉為日期格式,就可以再透過dt (datetime)轉成想要的顯示格式
df['date'] = pd.to_datetime(df["date"]).dt.strftime('%Y-%m')
df['time'] = pd.to_datetime(df["time],format='%H:%M').dt.time
10.nan資料處理或把不要的指定內容刪掉
fillna:將nan資料補成想要的值,例如捕0
df = df.fillna(0)
刪掉nan
dropna():刪除na資料
可以不指定欄位,就會將所有有na的row都刪掉,也可以指定欄位
df = df.dropna(subset=['指定欄位'])
isin():判斷資料有沒有在範圍內
“~”符號等於不交集的那一部分,也就是把指定的欄位移出df
df = df[~df['指定欄位'].isin('某陣列之類的')]
如果沒有~,就是留下指定的資料部分
df = df[df['指定欄位'].isin('某陣列之類的')]
11.重設索引:reset_index
df = df.reset_index()
把資料的索引變成0, 1, 2...,原本的索引變成column
12.其他進階操作
如果想看資料的計算結果,pandas擁有蠻強大的相關函式,可以把各種方法組合起來,直接combo
常用到的莫過於 groupyby+ agg了
df = df.groupby(['1號欄位', '2號欄位'])['3號欄位'].mean()
df = df.groupby(['space_id', 'created_at'], as_index=False)['score'].mean()
上面這段意思是透過 1號、2號的groupby,然後再算3號的平均值
df = df.groupby(['space_id', 'created_at', 'title']).agg({'id':'count','score':'mean'}).reset_index()
上面這段是在做space_id, created_at, title的groupby,並將id算資料數,score取平均
df = df.groupby(['date']).date.agg('count').to_frame('count').reset_index()
上面這一段是做date的groupby,並算資料筆數
df = df.groupby(['space_id']).agg({'time':['mean','std', q1, q2, q3]})
上面這一段是在做space_id的groupby,並作time的平均、標準差以及四分位數的計算寫完專案後,只記得用了這些函式,其實還有很多
pandas真的很方便,寫了一篇做筆記。希望自己印象可以加分