pandas入門04---數據讀取

01 文本格式數據讀寫

01-01 帶表頭文件

一些數據載入函數,如pandas.read_csv會進行類型推斷,由於列的數據類型並非數據格式的一部分。這意味着你沒必要指定哪一列是數值、整數、布爾值或字符串。正則表達式

例如:咱們能夠使用read_csv將一個以,分割的文件讀入DataFrame。json

df = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex1.csv')
print(df)

結果以下:函數

也能夠使用read_table,並指定分隔符。3d

df2 = pd.read_table(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex1.csv',
	sep=',')
print(df2)

結果以下:code

01-02 不帶表頭文件

有的文件不帶表頭,要讀取該文件,需考慮一些選項。能夠容許pandas自動分配默認列名,也能夠本身指定列名。對象

data = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex2.csv',header=None)
print(data)

data1 = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex2.csv',names=['a','b','c','d','message'])
print(data1)

假設想要message列成爲返回DataFrame的索引,能夠指定位置4的列爲索引,或將‘message’傳給參數index_col。blog

names = ['a', 'b', 'c', 'd', 'message']
data2 = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex2.csv', names=names, index_col='message')
print(data2)

當你想從多個列中造成一個分層索引,須要傳入一個包含列序號或列名的列表:索引

parsed = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\csv_mindex.csv',index_col=['key1','key2'])
print(parsed)

結果以下:ip

當字段以多種不一樣數量的空格分開時,能夠使用正則表達式處理。字符串

result = pd.read_table(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex3.csv', sep='\s+')
print(result)

因爲列名的數量比列數少一個,所以read_table推斷第一列爲DataFrame索引。

#跳過第1,3,4行
skip_res = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex4.csv', skiprows=[0, 2, 3])
print(skip_res)

02 分塊讀文本文件

# 使輸出顯示更爲緊湊
pd.options.display.max_rows = 10

res = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex6.csv')
print(res)

若是你想只讀一小部分行(避免讀取整個文件),能夠指明nrows。

five_rows = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex6.csv', nrows=5)
print(five_rows)

爲了分塊讀入文件,能夠指定chunksize做爲每一塊的行數:

chunkers = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex6.csv',chunksize=1000)
tot = pd.Series([])
for piece in chunkers:
	tot = tot.add(piece['key'].value_counts(),fill_value=0)
tot = tot.sort_values(ascending=False)
print(tot[:10])

還有get_chunk方法,能夠容許按照任意大小讀取數據塊。

03 將數據寫入文本格式

能夠使用to_csv方法,將數據導出爲逗號分隔的文件。

data.to_csv("out.csv")

也能夠使用其餘分隔符。

# sys.stdout,控制檯標準輸出
data.to_csv(sys.stdout,sep='|')

缺失值在輸出時以空字符串出現,能夠使用其餘標識值來對缺失值進行標註。

data.to_csv(sys.stdout,na_rep='NULL')

能夠禁止寫入行和列的標籤:

data.to_csv(sys.stdout,index=False,header=False)

能夠僅寫入列的子集,並按照指定順序寫入:

data.to_csv(sys.stdout,index=False, columns=[1,2,3])

Series也有to_csv方法。

使用json.load方法將Json字符串轉換成Python形式,json.dumps能夠將Python對象轉換成Json。

相關文章
相關標籤/搜索