sql清空某一列数据_python数据分析:整理某一列的内容

上一篇文章中,我们已删除了dataframe中不必要的行列,并学会了如何更改行索引。在这篇文章中,我会教大家清理特定的列并将它们化为统一格式,以使数据集更好看并且增强数据集的一致性。

首先我们回顾下上篇文章清理后的数据集

686befe049b21daa660647d57a9a28a8.png

我们可以看到Date of Publication和Place of Publication这两列还是需要进行格式统一的。首先我们定位到Date of Publication列看一看

df.loc[1905:, 'Date of Publication'].head(10)
73a35bbe47383bdf15c8bf5bf861c454.png

可以知道的是一本书的出版日期应该只有一个,但是我们发现原始数据集中有很多不规则或者错误的日期表示,因此,我们需要执行以下操作:

  • 删除方括号中多余的日期,例如:1879 [1878]
  • 将日期范围转换为它们的“开始日期”,例如:1860-63; 1839,38-54

明确了我们要做什么之后,这个时候就得用到正则表达式了

regex = r'^(d{4})'

关于正则表达式,随后我会专门写一篇文章,欢迎大家关注。在这儿你只要知道这个正则表达式的作用就是找到字符串的前4个数字就行了。

来看看在数据集中运行正则表达式抓取后是什么样子

extr = df1['Date of Publication'].str.extract(r'^(d{4})', expand=False)extr.head()
e853bb1268c697ac5de2082c69b8082c.png

可以看到多余的年份被去除了只留下了前4个数字。这部分就算完成了。


然后我们再定位到Date of Publication列看一看

a5ceb17df4e90efcb3086495fa7d7d25.png

我们看到,对于Date of Publication列有很多不必要的信息。如果我们浏览更多的值,会发现只有出版地为“伦敦”或“牛津”的时候才会有无用信息。

这个时候怎么办呢?

我们首先的定位到包含”伦敦“或者”牛津“的格子然后再想办法修改,接着往下看

pub = df['Place of Publication']london = pub.str.contains('London')#通过str.contains完成定位工作london[:5]oxford = pub.str.contains('Oxford')
d28e51e00274686f13ff1445adda4338.png

然后我们将其与np.where结合使用就可以达到替换的目的:

df['Place of Publication'] = np.where(london, 'London',                                      np.where(oxford, 'Oxford',                                            pub.str))df['Place of Publication'].head()

np.where(condition, x, y)

满足条件(condition),输出x,不满足输出y。上面的用法就是满足包含London就输出London,包含牛津就输出牛津

可以看到出版地”伦敦“不必要的信息都没了,只留下”伦敦“,牛津也是如此。

4e73cd402dcd130ec22a36fb52130310.png

此时我们再回头看处理过的数据集,见下图

4277686d15cc36bfe5152a762a7824b2.png

我们可以看到Date of Publication和Place of Publication这两列是不是清晰多了?


最后总结一下,这篇文章主要运用了np.where,还有正则表达式替换。之前的行与列的处理见上篇文章(好像还在审核),有兴趣的同学可以去看看。好了,今天就这么多,欢迎大家关注交流,一起进步,一个小白的python进阶之路。

发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,并且按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的。

往期精彩:

Python初学者应避免的2个常见错误

机器学习实战:迷你数据库+超详细解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值