Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python数据分析实战之分布分析

Python数据分析实战之分布分析

作者头像
用户7466307
发布于 2020-06-17 14:08:28
发布于 2020-06-17 14:08:28
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

前言

分布分析法,一般是根据分析目的,将数据进行分组,研究各组别分布规律的一种分析方法。数据分组方式有两种:等距或不等距分组。

分布分析在实际的数据分析实践中应用非常广泛,常见的有用户性别分布,用户年龄分布,用户消费分布等等。

本文将进行如下知识点讲解:

1.数据类型的修改

2.新字段生成方法

3.数据有效性校验

4.性别与年龄分布

分布分析

1.导入相关库包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import matplotlib.pyplot as plt
import math

2.数据处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> df = pd.read_csv('UserInfo.csv')
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000000 entries, 0 to 999999
Data columns (total 4 columns):
UserId        1000000 non-null int64
CardId        1000000 non-null int64
LoginTime     1000000 non-null object
DeviceType    1000000 non-null object
dtypes: int64(2), object(2)
memory usage: 30.5+ MB

由于接下来我们需要做年龄分布分析,但是从源数据info()方法可知,并无年龄字段,需要自己生成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 提取出生日期需要先把身份证号码转换成字符串
>>> df['CardId'] = df['CardId'].astype('str')

# 提取出生日期,并生成新字段
>>> df['DateofBirth'] = df.CardId.apply(lambda x : x[6:10]+"-"+x[10:12]+"-"+x[12:14])

# 提取性别,待观察性别分布
>>> df['Gender'] = df['CardId'].map(lambda x : 'Male' if int(x[-2]) % 2 else 'Female')

>>> df.head()

3.计算年龄

由于数据来源于线下,并未进行数据有效性验证,在进行年龄计算前,先针对数据进行识别,验证。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 提取出生日期:月和日
>>> df[['month','day']] = df['DateofBirth'].str.split('-',expand=True).loc[:,1:2]

# 提取小月,查看是否有31>>> df_small_month = df[df['month'].isin(['02','04','06','09','11'])]

# 无效数据,如图所示
>>> df_small_month[df_small_month['day']=='31']

# 统统删除,均为无效数据
>>> df.drop(df_small_month[df_small_month['day']=='31'].index,inplace=True)

# 同理,校验2>>> df_2 = df[df['month']=='02']

# 2月份的校验大家可以做的仔细点儿,先判断是否润年再进行删减
>>> df_2[df_2['day'].isin(['29','30','31'])]

# 统统删除
>>> df.drop(df_2[df_2['day'].isin(['29','30','31'])].index,inplace=True)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 计算年龄
# 方法一
>>> df['Age'] = df['DateofBirth'].apply(lambda x : math.floor((pd.datetime.now() - pd.to_datetime(x)).days/365))

# 方法二
>>> df['DateofBirth'].apply(lambda x : pd.datetime.now().year - pd.to_datetime(x).year)

4.年龄分布

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看年龄区间,进行分区
>>> df['Age'].max(),df['Age'].min()
# (45, 18)

>>> bins = [0,18,25,30,35,40,100]
>>> labels = ['18岁及以下','19岁到25岁','26岁到30岁','31岁到35岁','36岁到40岁','41岁及以上']

>>> df['年龄分层'] = pd.cut(df['Age'],bins, labels = labels)

由于该数据记录的是用户登录信息,所以必定有重复数据。而Python如此强大,一个nunique()方法就可以进行去重统计了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看是否有重复值
>>> df.duplicated('UserId').sum()    #47681

# 数据总条目
>>> df.count()    #980954

分组后用count()方法虽然也能够计算分布情况,但是仅限于无重复数据的情况。而Python这么无敌,提供了nunique()方法可用于计算含重复值的情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> df.groupby('年龄分层')['UserId'].count()
年龄分层
18岁及以下      25262
19岁到25254502
26岁到30181751
31岁到35181417
36岁到40181589
41岁及以上     156433
Name: UserId, dtype: int64

# 通过求和,可知重复数据也被计算进去
>>> df.groupby('年龄分层')['UserId'].count().sum()
# 980954

>>> df.groupby('年龄分层')['UserId'].nunique()
年龄分层
18岁及以下      24014
19岁到25242199
26岁到30172832
31岁到35172608
36岁到40172804
41岁及以上     148816
Name: UserId, dtype: int64


>>> df.groupby('年龄分层')['UserId'].nunique().sum()
# 933273  = 980954(总)-47681(重复)

# 计算年龄分布
>>> result = df.groupby('年龄分层')['UserId'].nunique()/df.groupby('年龄分层')['UserId'].nunique().sum()
>>> result

# 结果
年龄分层
18岁及以下     0.025731
19岁到250.259516
26岁到300.185189
31岁到350.184949
36岁到400.185159
41岁及以上     0.159456
Name: UserId, dtype: float64


# 格式化一下
>>> result = round(result,4)*100
>>> result.map("{:.2f}%".format)

年龄分层
18岁及以下      2.57%
19岁到2525.95%
26岁到3018.52%
31岁到3518.49%
36岁到4018.52%
41岁及以上     15.95%
Name: UserId, dtype: object

通过以上结果及分布图可以知道,19到25岁年龄段的用户占比最高,为26%。

好了,就讲解到这了~

END!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试test 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《Pandas 1.x Cookbook · 第二版》第05章 探索性数据分析
概括性统计包括平均值、分位值、标准差。.describe方法能计算DataFrame中数值列的统计信息:
SeanCheney
2021/03/02
7080
《Pandas 1.x Cookbook · 第二版》第05章 探索性数据分析
Python数据分析之Pandas(三)
: | -----: | ------: | -----: | --------: | | 0 | 1 | 1193 | 5 | 978300760 | | 1 | 1 | 661 | 3 | 978302109 | | 2 | 1 | 914 | 3 | 978301968 | | 3 | 1 | 3408 | 4 | 978300275 | | 4 | 1 | 2355 | 5 | 978824291 |
yuanshuai
2022/08/22
1.5K0
Python数据分析之Pandas(三)
Python数据分析之Pandas(四)
: | -----: | -----: | ---: | ---------: | -------: | | 0 | 1 | F | 1 | 10 | 48067 | | 1 | 2 | M | 56 | 16 | 70072 | | 2 | 3 | M | 25 | 15 | 55117 | | 3 | 4 | M | 45 | 7 | 02460 | | 4 | 5 | M | 25 | 20 | 55455 |
yuanshuai
2022/08/22
8650
Python数据分析之Pandas(四)
【数据分析可视化】数据聚合技术Aggregation
import numpy as np import pandas as pd from pandas import Series, DataFrame # 读入城市天气csv文件 df = pd.read_csv('/Users/bennyrhys/Desktop/数据分析可视化-数据集/homework/city_weather.csv') df date city temperature wind 0 03/01/2016 BJ 8 5 1 17/01/2016 BJ 12 2
瑞新
2020/07/07
6210
「Python」用户消费行为分析
请注意,本文编写于 297 天前,最后修改于 296 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.1K0
「Python」用户消费行为分析
Python数据分析之Pandas(二)
: | ---------: | -----: | -----: | ------: | --------: | -----: | ---: | ------: | -------: | | 0 | 2018-01-01 | 3℃ | -6℃ | 晴~多云 | 东北风 | 1-2级 | 59 | 良 | 2 | | 1 | 2018-01-02 | 2℃ | -5℃ | 阴~多云 | 东北风 | 1-2级 | 49 | 优 | 1 | | 2 | 2018-01-03 | 2℃ | -5℃ | 多云 | 北风 | 1-2级 | 28 | 优 | 1 | | 3 | 2018-01-04 | 0℃ | -8℃ | 阴 | 东北风 | 1-2级 | 28 | 优 | 1 | | 4 | 2018-01-05 | 3℃ | -6℃ | 多云~晴 | 西北风 | 1-2级 | 50 | 优 | 1 |
yuanshuai
2022/08/22
1.7K0
Python数据分析之Pandas(二)
肝了3天,整理了50个Pandas高频使用技巧,强烈建议收藏!
今天小编来分享在pandas当中经常会被用到的方法,篇幅可能有点长但是提供的都是干货,读者朋友们看完之后也可以点赞收藏,相信会对大家有所帮助,大致本文会讲述这些内容
用户6888863
2021/10/28
1.3K0
肝了3天,整理了50个Pandas高频使用技巧,强烈建议收藏!
基于机器学习的IC电商数据挖掘-数据探索篇
从描述统计信息中发现price字段的最小值是0,判定位异常;我们选择price大于0的信息:
皮大大
2023/08/25
3180
基于机器学习的IC电商数据挖掘-数据探索篇
kaggle实战-黑色星期图画像分析
本文是对还是kaggle上一份黑色星期五消费数据的分析,主要是针对用户和商品信息的画像分析。
皮大大
2023/08/25
2800
实战 | 用Python爬取《云南虫谷》3.6万条评论,并做数据统计可视化展示分析,好看!
最近鬼吹灯系列网剧《云南虫谷》上线,作为鬼吹灯系列作品,承接上部《龙岭迷窟》内容,且还是铁三角原班人马主演,网友直呼非常好看!
可以叫我才哥
2021/09/24
1.3K0
08.基本统计&分组&分布分析1.基本统计分析2.分组分析3.分布分析
描述性统计分析,用来概括事物整体状况以及事物间联系,即事物的基本特征,以发现内在规律的统计分析方法。
用户1250179
2018/08/02
5290
Pandas之:Pandas高级教程以铁达尼号真实数据为例
接下来我们会以Pandas官网提供的Titanic.csv为例来讲解Pandas的使用。
程序那些事
2021/06/07
8190
「Python」数据分析奇技淫巧
请注意,本文编写于 291 天前,最后修改于 291 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
2710
「Python」数据分析奇技淫巧
某款APP用户注册信息有了,一起用Python数据分析实战吧
本文基于某款互联网游戏APP用户注册数据进行分析,讲解了python中两个使用频率特别高的第三方库:pandas 和 matplotlib。pandas相信大家已经非常熟悉了,但是matplotlib绘图,还需要精心研究。想绘制出美美的图形,需要下一番功夫。温馨提示:本文与以下文章合服效果更佳哦~
龙哥
2019/11/29
7120
Python基础(十一) | 超详细的Pandas库三万字总结
而基于Numpy构建的Pandas库,提供了使得数据分析变得更快更简单的高级数据结构和操作工具
timerring
2022/10/28
4590
Python基础(十一) | 超详细的Pandas库三万字总结
Python数据分析实战(2)使用Pandas进行数据分析
Pandas的使用很灵活,最重要的两个数据类型是DataFrame和Series。
cutercorley
2020/08/26
4.2K0
【Python数据分析五十个小案例】分析某电商平台的用户购买行为
数据分析为我们提供了对市场动态的深刻洞察,能够帮助企业优化运营策略、提升用户体验和增加收入。在本案例中,我们将通过Python进行电商平台用户购买行为数据的分析,揭示不同用户群体的消费模式以及热门产品的销售趋势。通过数据分析,我们希望为平台提供更精确的市场决策依据。
小馒头学Python
2024/12/22
6320
【Python数据分析五十个小案例】分析某电商平台的用户购买行为
Python 数据分析(PYDA)第三版(五)
对数据集进行分类并对每个组应用函数,无论是聚合还是转换,都可能是数据分析工作流程的关键组成部分。加载、合并和准备数据集后,您可能需要计算组统计信息或可能需要为报告或可视化目的计算数据透视表。pandas 提供了一个多功能的groupby接口,使您能够以自然的方式切片、切块和总结数据集。
ApacheCN_飞龙
2024/05/24
4080
Python 数据分析(PYDA)第三版(五)
《利用Python进行数据分析·第2版》第14章 数据分析案例14.1 来自Bitly的USA.gov数据14.2 MovieLens 1M数据集14.3 1880-2010年间全美婴儿姓名14.4
本书正文的最后一章,我们来看一些真实世界的数据集。对于每个数据集,我们会用之前介绍的方法,从原始数据中提取有意义的内容。展示的方法适用于其它数据集,也包括你的。本章包含了一些各种各样的案例数据集,可以用来练习。 案例数据集可以在Github仓库找到,见第一章。 14.1 来自Bitly的USA.gov数据 2011年,URL缩短服务Bitly跟美国政府网站USA.gov合作,提供了一份从生成.gov或.mil短链接的用户那里收集来的匿名数据。在2011年,除实时数据之外,还可以下载文本文件形式的每小时快照。
SeanCheney
2018/04/24
3.2K0
《利用Python进行数据分析·第2版》第14章 数据分析案例14.1 来自Bitly的USA.gov数据14.2 MovieLens 1M数据集14.3 1880-2010年间全美婴儿姓名14.4
Python数据分析之Pandas(五)
: | ---: | ---: | ---: | ---: | ---: | | 0 | S001 | 怠涵 | 女 | 23 | 山东 | | 1 | S002 | 婉清 | 女 | 25 | 河南 | | 2 | S003 | 溪榕 | 女 | 23 | 湖北 | | 3 | S004 | 漠涓 | 女 | 19 | 陕西 | | 4 | S005 | 祈博 | 女 | 24 | 山东 |
yuanshuai
2022/08/22
1.2K0
Python数据分析之Pandas(五)
推荐阅读
相关推荐
《Pandas 1.x Cookbook · 第二版》第05章 探索性数据分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验