【数据转换】解决销量数据中带单位的问题

2020-02-08 258次浏览 已收录 2个评论

对于一个数据集进行统计或者进行分析,避免不了的就是数据类型的转换。例如对日期进行统计分析、对价格进行统计分析、对销量进行统计分析……

做这些的前提是你需要有规范的数据格式

下面这类数据是当时我自己没有考虑到,所以需要进行转换,不过我觉得这种情况以后也会遇见,说不定你碰到什么人呢。

这种字符串类型数据会给你造成数据之间不能进行比较,解决的办法就是把它转化成int型或者float型

tips:

  • 由于作者当时对数据清洗不了解,所以当时爬的时候并没有考虑那么多,导致现在需要对数据做个处理
  • 作者最近一直在学pandas,这里作者也就使用pandas来进行数据类型转换
  • 因为刚学,所以并不了解什么奇法;作者用了自己想到的办法也能对数据进行转换

这种销量数据可分为几种格式

  • 纯数字的字符串类型
  • 1.0万    一个万相当于三个0
  • 15万     一个万相当于四个0
  • 15.3万  一个万相当于三个0

流程如下(例如):

确定一个条件–> df[‘yuyueliang’]>10000)

确定满足条件的行–> df[(df[‘yuyueliang’]>10000)]

确定这些行的index–> df[(df[‘yuyueliang’]>10000)].index.tolist()

数据类型是字符串

字符串类型是不能进行数据计算的

list=df[df['yuyueliang'].str.contains('万')].index.tolist()#返回带‘万’的索引
有594个数据是不合规范的
通过返回的list查看果然不符合数据规范

先解决第一类:例如11.4万

list2=df[df['yuyueliang'].str.contains('\d\d\.')].index.tolist()
df.loc[list2,'yuyueliang']=df.loc[list2]['yuyueliang'].str.replace('万','000')
df.loc[list2,'yuyueliang']=df.loc[list2]['yuyueliang'].str.replace('.','')
转换前

转换目标:114000

转换后

第二类:例如1.2万

list5=df[df['yuyueliang'].str.contains('.*?\..*?')].index.tolist()
df.loc[list5,'yuyueliang']=df.loc[list5]['yuyueliang'].str.replace('万','000')
df.loc[list5,'yuyueliang']=df.loc[list5]['yuyueliang'].str.replace('.','')
转换前

转换目标:12000

转换后

最后数据都转成数字型字符串后就可以进行最后的数据类型转换了


既然数据整理好了,就可以分析它了

五万到十五万之间有异常数据


渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【数据转换】解决销量数据中带单位的问题
喜欢 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 记住这个网站了
    你哥2020-03-27 13:18
  2. 记住这个网站了
    小蚯蚓2020-03-28 17:00