landing_image landing_image landing_image landing_image landing_image landing_image landing_image
portrait

YX.S

成為一個厲害的普通人

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,並算資料筆數

 
def q1(x):
  return x.quantile(0.25)

def q2(x):
  return x.quantile(0.5)

def q3(x):
  return x.quantile(0.85)
 

df = df.groupby(['space_id']).agg({'time':['mean','std', q1, q2, q3]})

上面這一段是在做space_id的groupby,並作time的平均、標準差以及四分位數的計算
 
 
 

寫完專案後,只記得用了這些函式,其實還有很多

pandas真的很方便,寫了一篇做筆記。希望自己印象可以加分