天天看点

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

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

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

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

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

df.loc[1905:, 'Date of Publication'].head(10)
           
sql清空某一列数据_python数据分析:整理某一列的内容

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

  • 删除方括号中多余的日期,例如: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()
           
sql清空某一列数据_python数据分析:整理某一列的内容

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

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

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

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

这个时候怎么办呢?

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

pub = df['Place of Publication']london = pub.str.contains('London')#通过str.contains完成定位工作london[:5]oxford = pub.str.contains('Oxford')
           
sql清空某一列数据_python数据分析:整理某一列的内容

然后我们将其与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,包含牛津就输出牛津

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

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

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

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

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

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

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

往期精彩:

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

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