pandas库的使用——用于数据清洗、表格文件存取

简介

pandas是基于numpy的库,一维数据用Series,二维数据用DataFrame,以下所有例子都基于

from pandas import DataFrame, Series
import pandas as pd 

#基本操作

一维初始化及按行索引

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

#打印所有信息
# print(df.info)

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

.info方法输出显示的叫概要视图

一维转换类型

.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 统计量信息

.value_counts 统计各个值出现的次数

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

       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)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值