pandas庫的使用——用於數據清洗、表格文件存取

簡介

pandas是基於numpy的庫,一維數據用Series,二維數據用DataFrame,以下所有例子都基於

#基本操作

一維初始化及按行索引

a=Series([1,2,3])#默認索引從0開始
b=Series([1,2,3],index=['a','b','c'])#可設置索引
c=Series({'a':1,'b':2,'c':3})#可結合字典
# print(c.keys())
# print(c.index)
#修改索引
c.index=['d','e','f']#修改索引
print(c)
#按行索引,無按列索引
# print(c['d'])
# print(c[0])
# print(c[0:2])
# print(c[[0,2]])

d    1
e    2
f    3
dtype: int64

二維初始化及按行按列索引

a={'fea1':[1,2,3],'fea2':[4,5,6],'fea3':[7,8,9]}
df=DataFrame(a)#用字典初始化
df.columns.name='FEA'#設置列名
df.index.name='INDEX'#設置索引名
print(df)
# print(df.columns)#Index(['fea1', 'fea2', 'fea3'], dtype='object', name='FEA')
#按行索引
# print(df[0:2])
# print(df.ix[1])
# print(df.ix[0:1])
# print(df.ix[[1,2]])

#按列索引
# print(df[['fea1','fea3']])
# print(df[df.columns[:2]])

#按照列重排
# df.columns=['fea3','fea1','fea2']
# print(df)

#查找某行某列的數據
# .loc  .iloc  .ix

#查找某個元素
#  .get_value   .at   .iat

FEA    fea1  fea2  fea3
INDEX                  
0         1     4     7
1         2     5     8
2         3     6     9

一維轉換類型

.to_string()  .to_dict()  .tolist()  .to_json()   .to_frame()  .to_csv()

二維轉換類型

.to_json() .tolatex()  .to_excel()

利用條件查找數據

query也可以用來排除一些異常數據


a={'fea1':[1,2,3],'fea2':[4,5,6],'fea3':[7,8,9]}
df=DataFrame(a)#用字典初始化
print(df)

# #單個條件
# print(df[df['fea2']>5])
# #多個條件
# print(df[(df['fea2']>4) & (df['fea3']<9)])#注意這裏多個條件要()
# print(df.query('fea2>4 and fea3<9'))#注意引號的位置
# canshu=9
# print(df.query('fea2>4 and fea3<@canshu'))#注意引用外部參數時要使用@

計算

.sum .mean  .max  .min 

描述

 

.shape  大小

.dtype 數據類型

.info 多種信息(包含數據量、特徵、數據類型)

.describe 統計量信息

a={'fea1':[1,2,3],'fea2':[4,5,6],'fea3':[7,8,9]}
df=DataFrame(a)#用字典初始化
print(df.describe())

       fea1  fea2  fea3
count   3.0   3.0   3.0
mean    2.0   5.0   8.0
std     1.0   1.0   1.0
min     1.0   4.0   7.0
25%     1.5   4.5   7.5
50%     2.0   5.0   8.0
75%     2.5   5.5   8.5
max     3.0   6.0   9.0

預覽

.head()#頭5行

.tail()#後5行

.sample(5)#隨機5行

 

統一操作

Series:.map

Dataframe:.apply   .applymap

#數據清洗

補充缺失值

a=DataFrame({'col1':[1,2,3,None,5],'col2':[2,3,None,3,4]})
print(a)
# print(a.fillna('missing_value'))#將缺失值作爲一個特殊的值
# print(a.fillna(a.mean()))#補均值
#補附近的值
# print(a.fillna(method='bfill'))#back fill 即用後一個值填充
# print(a.fillna(method='ffill',limit=1))#補前一個值,limit=1表示連續的缺失只補1個
#插值補值
# print(a.interpolate(method='polynomial',order=2))#二次多項式插值
# print(a.interpolate(method='spline',order=3))#三次樣條插值

去除有缺失值的行

a=DataFrame({'col1':[1,2,3,None,5,None],'col2':[2,3,None,3,4,None]})
print(a)
#刪掉有0的行
print(a.dropna())
#刪掉全0的行
# print(a.dropna(how='all',axis=0))#這裏有點反常識,0表示行,1表示列

去重去列特徵

a=DataFrame({'col1':[1,2,3,None,5,None,1],'col2':[2,3,None,3,4,None,2]})
print(a)
print(a.drop_duplicates())#去重
print(a.drop('col2',axis=1))#去列特徵

#用於文件存取

csv文件

a=DataFrame({'col1':[1,2,3,None,5,None,1],'col2':[2,3,None,3,4,None,2]})
#csv文件的生成
# a.to_csv('cshi.csv',index=None,mode='a',header=True)#a表示追加模式,header=False表示不再寫入列名
#csv文件的讀取
b=pd.read_csv('cshi.csv')
print(b)

excel文件

與xls文件一樣,如果不和pandas結合,一個xlsx文件的生成分爲【建表-增加sheet-寫入-保存關閉】四步,這裏討論與pandas庫結合的方法,分爲【建立writer-增加sheet內容-保存關閉】三步。除了xlsxwriter外,另一個可以對xlsx文件進行更精細操作的庫爲openpyxl。

a=DataFrame({'col1':[1,2,3,None,5,None,1],'col2':[2,3,None,3,4,None,2]})
#xlsx文件的生成
# writer=pd.ExcelWriter('ceshi.xlsx',engine='xlsxwriter')
# a.to_excel(writer,sheet_name='ces')
# writer.save()

#xlsx文件的讀取
b=pd.read_excel('ceshi.xlsx',sheet_name='ces')
print(b)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章