# 將用pandas建立的表(DataFrame)保存成excel或csv格式:
import pandas as pd
df = pd.DataFrame() # 創(chuàng)建一個dataframe類(空表)艇搀,并將其賦值給df
df.to_excel('excel.xlsx') # 將df以excel的格式保存于excel.xlsx中
# 如果想要保存成csv的話:df.to_csv('xxx.csv')
# 在pandas里面佳簸,DataFrame譯為數(shù)據(jù)幀,相當(dāng)于excel里面的worksheet(一個表):
pandas.DataFrame(data=None,?index=None,?columns=None,?dtype=None,?copy=False)
# data : 可以是python的字典乒疏、列表法牲、numpy的數(shù)組或DataFrame
# index : 如果沒有設(shè)置為哪一列的話史汗,默認(rèn)為0, 1, 2, 3, ...
# columns : 列名,一般以列表的形式傳入
# dtype : 數(shù)據(jù)類型(沒太用)
# copy :?(沒太用)
# DataFrame輸入?yún)?shù)事例:
# 以字典的形式輸入
df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]})
print(df)
# 多出的第一列為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')? # 返回一個新的DataFrame,然后將新的DataFrame賦給df戈毒,用以覆蓋掉之前的df
print(df)
# 細(xì)心的朋友會注意到上面?zhèn)魅霐?shù)據(jù)的時候艰猬,順序依次是ID、name埋市、age冠桃,但是輸出的時候卻順序亂了,這個原因主要是因為python里面的字典是無序的道宅,如果想讓輸出的順序跟輸入時的順序一樣的話腊满,只需引入?columns=['ID', 'name', 'age']?來限定順序即可:
df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]}, columns=['ID', 'name', 'age'])
print(df)
# 以列表的形式輸入
df = pd.DataFrame([[0,1,2,3], ['chan','li','long','huang'], [21,24,23,19]])
print(df)
# 可見以字典形式導(dǎo)進(jìn)去的數(shù)據(jù)跟列表形式導(dǎo)進(jìn)去的數(shù)據(jù),他們的行列剛好相反培己,且以列表形式導(dǎo)進(jìn)的數(shù)據(jù)碳蛋,自動生成了列名以及index。那么如何讓這次輸出結(jié)果變成跟上次輸出結(jié)果一樣呢:
# 先把行名命名好省咨,再旋轉(zhuǎn)
df.index=['ID', 'name', 'age']??
print(df)
# DataFrame有兩個函數(shù)分別為:stack()和unstack()肃弟,unstack()是stack()的你操作,這里只討論unstack()
# 當(dāng)有列索引時零蓉,unstack()把列索引轉(zhuǎn)換到最外層行索引笤受;當(dāng)沒有列索引是,unstack()把最內(nèi)層行索引轉(zhuǎn)換成列索引敌蜂。因此對一個DataFrame做兩次unstack()操作即可實現(xiàn)行列轉(zhuǎn)換箩兽。
df = df.unstack().unstack()? # 返回一個新的dataframe,然后賦值給df章喉,用以覆蓋之前的df
print(df)
# 如果想要去第一列的話汗贫,可以用上面介紹的方法,即:
df = df.set_index('ID')? # 返回一個新的DataFrame秸脱,然后將新的DataFrame賦給df落包,用以覆蓋掉之前的df
print(df)
# 以numpy數(shù)組形式輸入
import numpy as np
arr = np.arange(15).reshape(3,5)? # 生成0-14一共15個數(shù),并且格式化為3行5列
df = pd.DataFrame(arr)
print(arr)
print('=====================')
print(df)
# 可見摊唇,numpy導(dǎo)入的格式跟python的list導(dǎo)入的個數(shù)的到的結(jié)果是相似的咐蝇。
# 以DataFrame格式導(dǎo)入
df1 = pd.DataFrame(df)
print(df1)
# 相當(dāng)于返回一個新的一樣的表。
(更新中巷查。有序。。)