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

首页 » 数据清洗 » 【数据转换】解决销量数据中带单位的问题

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

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

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

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

这种字符串类型数据会给你造成数据之间不能进行比较,解决的办法就是把它转化成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

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

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

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

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

【数据转换】解决销量数据中带单位的问题
【数据转换】解决销量数据中带单位的问题
五万到十五万之间有异常数据
【数据转换】解决销量数据中带单位的问题
【数据转换】解决销量数据中带单位的问题

分享到:
赞(0) 打赏

评论 2

评论前必须登录!

 

  1. #1

    记住这个网站了

    你哥8个月前 (03-27)
  2. #2

    记住这个网站了

    小蚯蚓8个月前 (03-28)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00