Pandas
安裝
pip install pandas
import pandas as pd
Series
類似於一維數組的對象,由一組數據和一組與之相關的數據標籤(索引)組成
創建方式
-
pd.Series([4,7,-5,3]),列表或者數組都行
-
pd.Series([4,7,-5,3],index=[‘a’,’b’,’c’,’d’]) 設置索引標籤
-
pd.Series({‘a’:1,’b’:2}
-
pd.Series(0,index=[‘a’,’b’,’c’,’d’])
獲取值數組和索引數組:values屬性和index屬性
比較像數組和字典的結合體
使用特性
-
運算和numpy的array是一樣的
-
切片和列表一樣,可以通過索引標籤來切片
-
支援numpy的通用函數
-
支援布爾索引
-
可以使用字典創建Series對象
-
遍歷列印的是值而不是鍵,這是和dict的區別
整數索引
sr = Series(np.range(20)) sr2 = sr[10:].copy() >> 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 sr2.loc[10] # 以標籤為整數10作為索引 >> 10 sr2.iloc[10] # 以下標為整數10作為索引 >> 19
注意:下標和標籤是不一樣的,所以使用整數作為索引要使用iloc
數據對齊
pandas在進行兩個Series對象的運算時,會按索引標籤進行對其然後計算,一般index是去重的
sr1 = pd.Series([1,2,3],index=['c','a','d']) sr2 = pd.Series([4,5,6,9],index=['d','c','a','b']) sr1 + sr2 >> a 8 # 2+6 b NaN c 6 # 1+5 d 7 # 4+3 sr1.add(sr2,fill_vlue=0) a 8 b 9 # 9+0 c 6 d 7
缺失數據處理
-
刪掉缺失數據:
-
sr.[sr.notnull()]
-
sr.dropna()
-
-
為缺失數據賦值0
-
sr.fillna(0)
-
若想保存則sr = sr.fillna(0)
-
-
為缺失數據賦值平均數
-
sr.fillna(sr.mean())
-
DataFrame
是一個表格型的數據結構,含有一組有序的列。可以看作是由Series組成的字典,並且共用一個索引
創建方式
-
pd.DataFrame({‘one’:[1,2,3],’two’:[2,3,4]})
-
pd.DataFrame({‘one’:pd.Series([1,2,3],index=[‘a’,’b’,’c’]),’two’:pd.Series([2,3,4,5],index=[‘a’,’b’,’c’,’d’])})
csv文件讀取與寫入
-
df.read_csv(‘file_nam.csv’)
-
df.to_csv()
常用屬性
屬性 | 描述 |
---|---|
index | 獲取索引 |
T | 轉置 |
columns | 獲取列索引 |
values | 獲取值數組 |
describe() | 獲取快速統計 |
索引和切片
-
df.loc[‘行索引’,’列索引’]
-
df.iloc[‘行索引’,’列索引’]
-
df.loc[花式索引,切片]
-
例如:df.[[‘a’,’c’],:]
-
不要用兩個中括弧來索引
數據對齊
-
在運算時,會進行數據對其,其行索引和列索引分別對其
缺失數據處理
-
dropna(axis=0,where=’any’,…)
-
df.dropna(how=’all’):這一行的值全為空則刪除
-
axis=0,是豎軸,刪行;axis=1,是橫軸,刪列
-
-
fillna()
-
isnull()
-
notnull()
其他常用方法
方法 | 描述 |
---|---|
mean() | axis=0,按列求平均值;axis=1,按行求平均值 |
sum() | 求和 |
sort_index() | 索引排序,有缺失值的排最後 |
sort_values(by=”,ascending=true) | 值排序,有缺失值的排最後 |
Numpy的通用函數 |
時間對象
-
import dateutil
-
dateutil.parser.parse(’02/03/2001′)
-
-
pd.to_datetime([‘2001-01-01′,’2010/Feb/02’]):轉成DatetimeIndex對象
時間對象生成
-
pd.date_range()
-
start:開始使勁按
-
end:結束時間
-
periods:長度
-
freq:頻率,默認’D’
-
H:hour
-
B:business
-
SM:semi month,半個月
-
T:minutes
-
S:second
-
W-Mon:每周一
-
1h20:每1小時20分鐘
-
-
時間序列
以時間對象為索引的Series或DataFrame
例如:sr = pd.Series(np.arange(1000),index=pd.date_range(‘2021-01-01’,periods=1000))
datetime對象作為索引時存儲在Datetimeimdex對象中
特殊功能:
-
傳入」年「或」年-月「作為切片
-
傳入日期範圍作為切片方式
-
豐富的函數支援:resample(),truncate()…
-
sr.resample(‘M’).sum():求每月的和
-
文件處理
常用文件格式:csv
讀取文件
pandas讀取文件:從文件名、URL、文件對象中載入數據
-
read_csv 默認分隔符為逗號
-
pd.read_csv(‘file_name.csv’,index_col=’date’,parse_dates=True):指定date列變成時間對象
-
會默認把第一行作為列名
-
-
read_table 默認分隔符為製表符
-
主要參數
-
sep:指定分隔符
-
header:指定文件無列名
-
name:指定列名
-
index_col:指定某列作為所引
-
skip_row:指定跳過某些行
-
na_values:指定某些字元串表示缺失值
-
parse_dates:指定某些列是否被解析為日期,類型為布爾值或列表
-
-
還有:read_json(),read_html(),read_excel(),read_sql()
-
read_excel()需要安裝xlrd的包
-
寫入文件
寫入到csv文件:to_csv函數
主要參數:
-
sep:指定分隔符
-
header=False:不輸出列名行
-
index=False:不輸出行索引列
-
na_rep:指定缺失值轉換的字元串,默認為空字元串
-
columns:指定輸出的列,傳入列表
還有:to_json(),to_html(),to_excel(),to_sql()