pandas---文件導入和導出細節詳解

數據的導入和導出

Pandas能從文本文件和Excel文件中讀入數據,形成dataframe,也可以將dataframe導出到文本文件、Excel文件中存儲起來。

導入函數有(1)pd.read_csv():導入後綴名爲.csv,.txt的文本文件;(2)pd.read_excel():導入後綴名爲.xlsx的Excel文件。導出函數有(1)df.to_csv)():將數據存儲到csv文件或txt文件中;(2)df.to_excel():將數據存儲到Excel文件中;

無論是導入函數還是導出函數,都有參數header,表示dataframe的列索引。而行索引在導入函數中用參數index_col表示,將某列指定爲行索引;行索引在導出函數中用參數index表示,指示是否要存好行索引。

導入文件

導入文本文件:pd.read_csv()

pd.read_csv()函數不光可以導入csv文件,也可以導入txt文件。

# 導入test.csv文件
df = pd.read_csv('test.csv')
# 導入test.txt文件
df = pd.read_csv('test.txt')
導入Excel文件:pd.read_excel()
# 導入test.xlsx文件
df = pd.read_excel('test.xlsx')
相對路徑和絕對路徑

導入文件時,要指定文件所在的路徑,可以是相對路徑,也可以是絕對路徑。

# 導入windows下的絕對路徑:導入E盤下的test.csv
pd.read_csv('E:\test.csv')
# 導入mac下的絕對路徑:導入xxx文件夾下的test.csv
pd.read_csv('/Users/xxx/test.csv')

相對路徑指的是當前的py文件所在的路徑。當要導入的文件和py文件在同一個文件夾下,則可以用相對路徑導入。

pd.read_csv('test.csv')

路徑的轉義?

Location = r'./test.csv' 
df = pd.read_csv(Location)

注意,因爲斜線是一個特殊字符,在字符串之前放置前導的 r,將會把整個字符串進行轉義。

默認列索引和行索引

導入文件時,若不指定列索引,則默認將文件中的第一行當成dataframe列索引,並且爲數據自動添加整數行索引。

# 默認將test.csv中的第一行當爲列索引,自動添加從0開始的整數索引
pd.read_csv('test.csv')
不要列索引

若導入時,第一行是數據,並非列索引,則可以將參數header設置爲None,即不讓第一行成爲列索引。但系統會自動添加從0開始的列索引。

df = pd.read_csv('test.csv', header=None)
指定某行爲列索引

導入數據時默認第一行爲列索引,但如果數據中第一行並非列索引,而是第k行,則可以用參數header指定第k行爲列索引。

# 指定test.csv中的第3行是列索引
df = pd.read_csv('test.csv', header=3)
添加列索引

若導入的數據中,並沒有列索引,需要添加列索引,則用參數names具體指定列索引。

# 指定test.csv(只有兩列)中的列索引爲['column1','column2']
df = pd.read_csv('test.csv', names=['column1','column2'])
指定行索引

導入數據時,會自動添加從0開始的整數行索引。若需要指定數據中第K列爲行索引,則要用index_col參數。

# 指定第0列是dataframe的行索引
df=pd.read_csv('test.csv',index_col=0)
# 指定列名爲'column'的列是dataframe的行索引
df=pd.read_csv('test.csv',index_col='column')
讀取指定的列

有時候,我們並不想把所有的列都讀入,只想讀取前幾列,或後幾列,或指定幾列。這時,可以使用usecols參數。

# 讀取csv數據中的第0列,第1列,第2列。
df = pd.read_csv('test.csv', usecols=[0,1,2])
指定分隔符

文本文件中,用分隔符來分隔每個值,所以讀入的時候,要用參數sep告訴函數分隔符是什麼。默認的分隔符是逗號。

# 指定分隔符是點號
df = pd.read_csv(filename,sep='.')
指定讀入excel的sheet頁

Excel文件在讀入時,默認讀取第一頁。但如果Excel文件有多頁,且不想讀取第一頁而是其他頁,則要用參數sheetname傳入讀入頁的名稱。

# 導入test.xlsx文件的sheet1頁
df = pd.read_excel('test.xlsx', sheetname='sheet1') 

導出數據

寫入文本文件:df.to_csv()

pandas可將dataframe存儲到csv文件或txt文件中。存儲的路徑可以是絕對路徑,也可以是先對路徑。

# 將數據表df存入當前py文件所在位置下的test.csv文件中,如果沒有這個文件,會自動創建
df.to_csv('test.csv')
# 將數據表df存入當前py文件所在位置下的test.txt文件中,如果沒有這個文件,會自動創建
df.to_csv('test.txt')
寫入excel文件:df.to_excel()

寫入Excel文件時,默認會寫入Excel文件中的第一頁。

# 將數據表df寫入test.xlsx文件中
df.to_excel('test.xlsx')

如果想要寫入指定的頁,則用參數sheet_name。

# 將數據表df寫入test.xlsx文件中'Sheet1'頁
df.to_excel('test.xlsx',sheet_name='Sheet1')
存儲行索引

存儲時,默認將數據表中的行索引也存儲到文件中。

# test.csv的行索引將會被存儲起來
df.to_csv('test.csv')
不存儲行索引

導出數據時,默認是要存儲行索引的。不存儲行索引的話,設置index的值爲False。

df.to_csv('test.csv', index = False)
不存儲列索引

導出數據時,默認是要存儲列索引的。不存儲列索引的話,設置header的值爲False。不要列索引,導出的數據就沒有列名。

df.to_csv('test.csv', header = False)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章