Pandas IO操作實例
讀取文本文件的兩個主要功能是read_csv()和read_table()。他們都使用相同的解析代碼將表格數(shù)據(jù)智能地轉(zhuǎn)換為DataFrame對象:
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None
pandas.read_csv(filepath_or_buffer, sep='\t', delimiter=None, header='infer', names=None, index_col=None, usecols=None
將此數(shù)據(jù)另存為temp.csv并對其進行操作。
S.No,Name,Age,City,Salary 1,Tom,28,Toronto,20000 2,Lee,32,HongKong,3000 3,Steven,43,Bay Area,8300 4,Ram,38,Hyderabad,3900
read.csv從csv文件讀取數(shù)據(jù)并創(chuàng)建一個DataFrame對象。
import pandas as pd df=pd.read_csv("temp.csv") print df
運行結(jié)果如下:
S.No Name Age City Salary 0 1 Tom 28 Toronto 20000 1 2 Lee 32 HongKong 3000 2 3 Steven 43 Bay Area 8300 3 4 Ram 38 Hyderabad 3900
這將在csv文件中指定一列,以使用index_col自定義索引。
import pandas as pd df=pd.read_csv("temp.csv",index_col=['S.No']) print df
運行結(jié)果如下:
S.No Name Age City Salary 1 Tom 28 Toronto 20000 2 Lee 32 HongKong 3000 3 Steven 43 Bay Area 8300 4 Ram 38 Hyderabad 3900
列的dtype可以作為dict傳遞。
import pandas as pd df = pd.read_csv("temp.csv", dtype={'Salary': np.float64}) print df.dtypes
運行結(jié)果如下:
S.No int64 Name object Age int64 City object Salary float64 dtype: object
默認情況下,Salary列的dtype為int,但結(jié)果將其顯示為float,因為我們已明確轉(zhuǎn)換了類型。因此,數(shù)據(jù)看起來像float。
Thus, the data looks like float ?
S.No Name Age City Salary 0 1 Tom 28 Toronto 20000.0 1 2 Lee 32 HongKong 3000.0 2 3 Steven 43 Bay Area 8300.0 3 4 Ram 38 Hyderabad 3900.0
使用names參數(shù)指定標題的名稱。
import pandas as pd df=pd.read_csv("temp.csv", names=['a', 'b', 'c','d','e']) print df
運行結(jié)果如下:
a b c d e 0 S.No Name Age City Salary 1 1 Tom 28 Toronto 20000 2 2 Lee 32 HongKong 3000 3 3 Steven 43 Bay Area 8300 4 4 Ram 38 Hyderabad 3900
請注意,標頭名稱后附加了自定義名稱,但是文件中的標頭尚未消除?,F(xiàn)在,我們使用header參數(shù)將其刪除。
如果標題不在第一行中,則將行號傳遞給標題。這將跳過前面的行。
import pandas as pd df=pd.read_csv("temp.csv",names=['a','b','c','d','e'],header=0) print df
運行結(jié)果如下:
a b c d e 0 S.No Name Age City Salary 1 1 Tom 28 Toronto 20000 2 2 Lee 32 HongKong 3000 3 3 Steven 43 Bay Area 8300 4 4 Ram 38 Hyderabad 3900
skiprows跳過指定的行數(shù)。
import pandas as pd df=pd.read_csv("temp.csv", skiprows=2) print df
運行結(jié)果如下:
2 Lee 32 HongKong 3000 0 3 Steven 43 Bay Area 8300 1 4 Ram 38 Hyderabad 3900