pandas學(xué)習(xí)筆記:常用函數(shù)

# 將用pandas建立的表(DataFrame)保存成excel或csv格式:

import pandas as pd

df = pd.DataFrame() # 創(chuàng)建一個(gè)dataframe類(lèi)(空表),并將其賦值給df

df.to_excel('excel.xlsx') # 將df以excel的格式保存于excel.xlsx中

# 如果想要保存成csv的話:df.to_csv('xxx.csv')

# 在pandas里面,DataFrame譯為數(shù)據(jù)幀,相當(dāng)于excel里面的worksheet(一個(gè)表):

pandas.DataFrame(data=None,?index=None,?columns=None,?dtype=None,?copy=False)

# data : 可以是python的字典、列表、numpy的數(shù)組或DataFrame

# index : 如果沒(méi)有設(shè)置為哪一列的話,默認(rèn)為0, 1, 2, 3, ...

# columns : 列名,一般以列表的形式傳入

# dtype : 數(shù)據(jù)類(lèi)型(沒(méi)太用)

# copy :?(沒(méi)太用)

# DataFrame輸入?yún)?shù)事例:

# 以字典的形式輸入

df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]})

print(df)


# 輸出結(jié)果(字典)

# 多出的第一列為pandas默認(rèn)的index,如想去除第一列,可把index設(shè)為“ID”,即ID為此表的index:

df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]})

df = df.set_index('ID')? # 返回一個(gè)新的DataFrame,然后將新的DataFrame賦給df,用以覆蓋掉之前的df

print(df)


# 輸出結(jié)果(去掉默認(rèn)的index)

# 細(xì)心的朋友會(huì)注意到上面?zhèn)魅霐?shù)據(jù)的時(shí)候,順序依次是ID、name、age,但是輸出的時(shí)候卻順序亂了,這個(gè)原因主要是因?yàn)閜ython里面的字典是無(wú)序的,如果想讓輸出的順序跟輸入時(shí)的順序一樣的話,只需引入?columns=['ID', 'name', 'age']?來(lái)限定順序即可:

df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]}, columns=['ID', 'name', 'age'])

print(df)


# 加columns參數(shù)輸出結(jié)果

# 以列表的形式輸入

df = pd.DataFrame([[0,1,2,3], ['chan','li','long','huang'], [21,24,23,19]])

print(df)


# 輸出結(jié)果(列表)

# 可見(jiàn)以字典形式導(dǎo)進(jìn)去的數(shù)據(jù)跟列表形式導(dǎo)進(jìn)去的數(shù)據(jù),他們的行列剛好相反,且以列表形式導(dǎo)進(jìn)的數(shù)據(jù),自動(dòng)生成了列名以及index。那么如何讓這次輸出結(jié)果變成跟上次輸出結(jié)果一樣呢:

# 先把行名命名好,再旋轉(zhuǎn)

df.index=['ID', 'name', 'age']??

print(df)


# 更改行名

# DataFrame有兩個(gè)函數(shù)分別為:stack()和unstack(),unstack()是stack()的你操作,這里只討論unstack()

# 當(dāng)有列索引時(shí),unstack()把列索引轉(zhuǎn)換到最外層行索引;當(dāng)沒(méi)有列索引是,unstack()把最內(nèi)層行索引轉(zhuǎn)換成列索引。因此對(duì)一個(gè)DataFrame做兩次unstack()操作即可實(shí)現(xiàn)行列轉(zhuǎn)換。

df = df.unstack().unstack()? # 返回一個(gè)新的dataframe,然后賦值給df,用以覆蓋之前的df

print(df)


# 輸出結(jié)果

# 如果想要去第一列的話,可以用上面介紹的方法,即:

df = df.set_index('ID')? # 返回一個(gè)新的DataFrame,然后將新的DataFrame賦給df,用以覆蓋掉之前的df

print(df)


#輸出結(jié)果

# 以numpy數(shù)組形式輸入

import numpy as np

arr = np.arange(15).reshape(3,5)? # 生成0-14一共15個(gè)數(shù),并且格式化為3行5列

df = pd.DataFrame(arr)

print(arr)

print('=====================')

print(df)


#以numpy數(shù)組格式導(dǎo)入數(shù)據(jù)的輸出結(jié)果

# 可見(jiàn),numpy導(dǎo)入的格式跟python的list導(dǎo)入的個(gè)數(shù)的到的結(jié)果是相似的。

# 以DataFrame格式導(dǎo)入

df1 = pd.DataFrame(df)

print(df1)


# 輸出結(jié)果

# 相當(dāng)于返回一個(gè)新的一樣的表。

(更新中。。。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容