Pandas介紹
Pandas是基于Numpy的專門(mén)用于數(shù)據(jù)分析的開(kāi)源Python庫(kù)仆潮。
Pandas沒(méi)有使用Python已有的內(nèi)置數(shù)據(jù)結(jié)構(gòu),而是使用率兩種新型的數(shù)據(jù)結(jié)構(gòu):Series和DataFrame
import pandas as pd
import numpy as np
Pandas和Numpy下載安裝
下載地址:
進(jìn)行Numpy安裝呐籽,先進(jìn)入whl安裝包的存放目錄。比如在C盤(pán):
cd C:\
再使用命令行安裝:
pip install numpy文件名.whl
文件讀寫(xiě)
Pandas提供了一套I/O API的函數(shù):
讀取數(shù)據(jù)后自動(dòng)生成DataFrame數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)。
讀取方式如:
data = pd.read_csv('filename.csv')
print (type(data))#輸出此數(shù)據(jù)的結(jié)構(gòu)
read_csv()
我們?cè)谧x取文件的時(shí)候曼氛,有許多必要的參數(shù)需要指定,以便我們得到的數(shù)據(jù)是可以直接用于后續(xù)數(shù)據(jù)分析過(guò)程的埃脏。
fixed_df = pd.read_csv('loandata_chi.csv', sep=';', encoding='gbk',
parse_dates=[u'發(fā)貸日期'], index_col=u'發(fā)貸日期', )
在讀取文件的時(shí)候搪锣,我們對(duì)四個(gè)參數(shù)進(jìn)行了設(shè)置:
- sep=
';'
。列分割符為';'
- encoding='gbk'彩掐。編碼方式為
'gbk'
(默認(rèn)為utf-8
) - parse_dates=[u'發(fā)貸日期']构舟。解析
'發(fā)貸日期'
列中的日期 - index_col=u'發(fā)貸日期'。將
'發(fā)貨日期'
列作為索引
分塊讀取
當(dāng)數(shù)據(jù)文件過(guò)大時(shí)堵幽,需要分塊讀取狗超。逐塊讀取文件需要設(shè)置chunksize(行數(shù)),該方法返回一個(gè)可迭代的對(duì)象TextFileReader,通過(guò)對(duì)這個(gè)對(duì)象進(jìn)行迭代朴下,我們就可以每次讀入部分?jǐn)?shù)據(jù)努咐,然后在每個(gè)部分?jǐn)?shù)據(jù)集上進(jìn)行計(jì)算。
chunker = pd.read_csv('loandata.csv', chunksize=4)
for piece in chunker:
pass
# 使用piece做后續(xù)處理
另外還有一個(gè)get_chunk()
方法殴胧,它使你可以讀取任意大小的塊:
f = pd.read_csv('loandata.csv', iterator=True)
df.get_chunk(4)
read_csv常見(jiàn)參數(shù)
不只是read_csv()渗稍,其他如read_table()的讀取函數(shù)也大致有以下參數(shù):
參數(shù) | 說(shuō)明 |
---|---|
sep或delimiter | 用于對(duì)行中各字段進(jìn)行拆分的字符序列或正則表達(dá)式 |
index_col | 用作行索引的列編號(hào)或列名佩迟。可以是單個(gè)名稱/數(shù)字或由多個(gè)名稱/數(shù)字組成的列表(層次化索引) |
nrows | 讀取前幾行數(shù)據(jù) |
skiprows | 指定跳過(guò)其中幾行 |
header | 用作列名的行號(hào)竿屹。默認(rèn)為0(第一行)报强,如果沒(méi)有header行就應(yīng)該設(shè)置為None |
names | 用于結(jié)果的列名列表,結(jié)合header=None |
usecols | 指定讀取其中的幾列拱燃,usecols=['grade']表明只讀grade列 |
dtype | 指定每列數(shù)據(jù)的數(shù)據(jù)類型秉溉。例如 {'a': np.float64, 'b': np.int32} |
na_values | 一組用于替換NA/NaN的值 |
encoding | 指定字符集編碼類型,通常指定為'utf-8' |
iterator | 返回一個(gè)TextFileReader 對(duì)象碗誉,以便逐塊處理文件 |
chunksize | 文件塊的大小召嘶,降低內(nèi)存占用 |
to_csv()
在Pandas中,如果是一個(gè)DataFrame對(duì)象哮缺,可以使用to_csv方法將該數(shù)據(jù)結(jié)構(gòu)存入一個(gè)文件弄跌。
import sys
df = pd.read_csv('loandata.csv', nrows=3, index_col='grade')
df.to_csv('loandata_3.csv')
to_csv
方法也存在多個(gè)與read_csv
相同的參數(shù)。
在輸出時(shí)蝴蜓,索引也會(huì)一同輸出碟绑,要想取消索引的輸出,則:
df = pd.read_csv('loandata.csv', nrows=3)
df.to_csv(sys.stdout, index=False)
Excel文件的讀寫(xiě)
通常情況下茎匠,讀取Excel文件格仲,需要設(shè)置sheetname。
pd.read_excel('loandata.xls', sheetname='first')
#讀取單個(gè)sheet
df = pd.read_excel('loandata.xls', sheetname=['first', 'second'])
df['second']
#讀取多個(gè)sheet到df中