Python也可以完成的数据清洗工作,你知道吗?

干净整洁的数据是后续进行研究和分析的基础。数据科学家们会花费大量的时间来清理数据集,毫不夸张地说,数据清洗会占据他们80%的工作时间,而真正用来分析数据的时间只占到20%左右。

 

所以,数据清洗到底是在清洗些什么?

 

通常来说,你所获取到的原始数据不能直接用来分析,因为它们会有各种各样的问题,如包含无效信息,列名不规范、格式不一致,存在重复值,缺失值,异常值等.....

如果你在学习Python的过程当中有遇见任何问题,可以加入我的python交流学习qq群:250933691,多多交流问题,互帮互助,群里有不错的学习教程和开发工具。学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我

本文会给大家介绍如何用Python中自带的PandasNumPy库进行数据清洗。在正式讲解之前,先简单介绍一下这两个非常好用的库。

 

Pandas的名称来自于Panel data和Python数据分析data analysis,是Python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,被作为金融数据分析工具,为时间序列分析提供了很好的支持,并于2009年底开源出来。

 

NumPyNumeric Python的缩写,是Python的一种开源的数值计算扩展,可用来存储和处理大型矩阵matrix,比Python自身的嵌套列表结构要高效的多,提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库,专为进行严格的数字处理而产生。

目录

一、了解数据

二、清洗数据

去除不需要的行、列

重新命名列

重新设置索引

用字符串操作规范列

用函数规范列

删除重复数据

填充缺失值

三、总结

【注】为了清晰直观地展示数据清洗操作,本文会用到几个不同的数据集,重点是方法的讲解。

【工具】Python 3

一、了解数据

拿到一个全新的数据集,应该从哪里入手?

没错,我们需要先了解数据,看看它长什么样子。这里用tushare.pro上面的日线行情数据进行展示,以浦发银行(600000.SH)为例。常用的方法和属性如下:

.head()

.tail()

.shape

.columns

.info()

.describe()

.value_counts()

首先,获取数据:

importpandasaspd

importnumpyasnp

importmatplotlib.pyplotasplt

importtushareasts

pd.set_option('display.max_columns',100)# 设置显示数据的最大列数,防止出现省略号…,导致数据显示不全

pd.set_option('expand_frame_repr',False)# 当列太多时不自动换行

pro = ts.pro_api()

df = pro.daily(ts_code='600000.SH', start_date='20190401', end_date='20190430')

.head() 查看前n行数据,默认值是5

df.head()

Out[1]:

ts_codetrade_dateopenhighlowclosepre_closechangepct_chgvolamount

0  600000.SH20190430  11.7012.0911.7011.9711.480.494.26831234747.381466714.710

1  600000.SH20190429  11.3511.5411.3411.4811.320.161.4134385869.38442046.727

2  600000.SH20190426  11.4311.5611.2811.3211.54-0.22-1.9064424695.81485267.261

3  600000.SH20190425  11.5611.6911.4811.5411.62-0.08-0.6885408761.29473973.527

4  600000.SH20190424  11.7611.7711.5111.6211.70-0.08-0.6838382011.08444929.313

.tail() 查看后n行数据,默认值是5

df.tail()

Out[2]:

ts_codetrade_dateopenhighlowclosepre_closechangepct_chgvolamount

16  600000.SH20190408  11.7911.9611.6511.7211.710.010.0854778703.73920513.531

17  600000.SH20190404  11.5511.7111.5411.7111.500.211.8261752325.27876099.547

18  600000.SH20190403  11.3711.5411.3411.5011.440.060.5245502710.29575799.446

19  600000.SH20190402  11.5011.5211.4111.4411.440.000.0000467147.10534896.810

20  600000.SH20190401  11.3611.5211.2911.4411.280.161.4184706374.05808657.530

.shape 查看数据维数

df.shape

Out[3]: (21, 11)

.columns 查看所有列名

df.columns

Out[4]:

Index(['ts_code','trade_date','open','high','low','close','pre_close',

'change','pct_chg','vol','amount'],

dtype='object')

.info() 查看索引、数据类型和内存信息

df.info()

RangeIndex:21entries,0to20

Data columns (total11columns):

ts_code21non-nullobject

trade_date21non-nullobject

open21non-nullfloat64

high21non-nullfloat64

low21non-nullfloat64

close21non-nullfloat64

pre_close21non-nullfloat64

change21non-nullfloat64

pct_chg21non-nullfloat64

vol21non-nullfloat64

amount21non-nullfloat64

dtypes: float64(9),object(2)

memory usage:1.9+ KB

.describe() 查看每列数据的基本统计值,包括计数值、均值、标准差、最小最大值、1/4、1/2、3/4分位数。

df.describe()

Out[7]:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值