0
点赞
收藏
分享

微信扫一扫

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!


问题抽丝剥茧

这个问题也算是​​群友答疑​​​。如果说同事或者老板给你一堆这样的数据,你估计会​​抓狂​​,该怎么处理呢?

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!_python自动化脚本


仔细观察上面数据可以发现,该数据有如下​​2个主要特点​​:

  • ① 每一行的数据长度不同。第一行和第三行有4个属性,第二行有5个属性。
  • ② 不同行的属性值,并不是对应排列。

解题思路剖析

你可能会想,直接用​​Excel分裂​​​。其实并不可行,因为不同行的属性值,并不是对应排列。​​Excel分列导致的结果就是​​:不同的属性,存在于相同的行。

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!_数据_02

放弃Excel那条路之后,我就只能​​寻求Python的帮助​​​了。我们要根据数据的特点,选择合适的数据存储方法。​​最终问题就转化为​​:构造数据源,然后创建DataFrame即可。

我曾经写了一篇文章​​《DataFrame的创建方式》​​,这篇文章总结了10种创建DataFrame的方法,我下面把链接提供给大家学习一下。

DataFrame的10种创建方式:​​http://suo.im/6tEjDJ​​

然后根据我们这个数据的特点,我选择构造​​字典组成的列表​​这样一个数据,并利用它来创建DataFrame。

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!_数据_03


观察我提供的这个案例和待解决的问题,简直​​异曲同工​​​。我们同样可以将上述数据的每一行,都变成一个个键值对组成的​​字典​​​。然后最外层用一个​​大列表​​,将所有的字典包含起来。

完整代码

1)首先需要构造练习数据

import pandas as pd
x = {"信息":["年龄:12;性别:女;身高:22;爱好:打球",
"年龄:12;说明:历史数据;性别:女;身高:22;爱好:打球",
"生日:2月3日;年龄:12;性别:女;爱好:打球"]
}
df = pd.DataFrame(x)

结果如下:

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!_数据_04

2)构造字典组成的列表

tmps_list = []
for data in df["信息"].values:
tmp_dict = {}
for kv in data.split(";"):
k, v = kv.split(":")
tmp_dict[k] = v
tmps_list.append(tmp_dict)

结果如下:

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!_python自动化脚本_05

3)创建DataFrame

df = pd.DataFrame(tmps)

结果如下:

领导给我一堆无序、杂乱的数据,我写了一个Python自动化脚本!_属性值_06


举报

相关推荐

0 条评论