# 將用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)

# 多出的第一列為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)

# 細(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)

# 以列表的形式輸入
df = pd.DataFrame([[0,1,2,3], ['chan','li','long','huang'], [21,24,23,19]])
print(df)

# 可見(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)

# 如果想要去第一列的話,可以用上面介紹的方法,即:
df = df.set_index('ID')? # 返回一個(gè)新的DataFrame,然后將新的DataFrame賦給df,用以覆蓋掉之前的df
print(df)

# 以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)

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

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