【Python基础】Python数据分析实战之分布分析

◆ ◆ ◆  ◆ ◆

前言

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

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

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

1.数据类型的修改

2.新字段生成方法

3.数据有效性校验

4.性别与年龄分布

分布分析

1.导入相关库包

import pandas as pd
import matplotlib.pyplot as plt
import math

2.数据处理

>>> 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()方法可知,并无年龄字段,需要自己生成。

# 提取出生日期需要先把身份证号码转换成字符串
>>> 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.计算年龄

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

# 提取出生日期:月和日
>>> 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)

# 计算年龄
# 方法一
>>> 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.年龄分布

# 查看年龄区间,进行分区
>>> 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()方法就可以进行去重统计了。

# 查看是否有重复值
>>> df.duplicated('UserId').sum()    #47681


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

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

>>> df.groupby('年龄分层')['UserId'].count()
年龄分层
18岁及以下      25262
19岁到25岁    254502
26岁到30岁    181751
31岁到35岁    181417
36岁到40岁    181589
41岁及以上     156433
Name: UserId, dtype: int64


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


>>> df.groupby('年龄分层')['UserId'].nunique()
年龄分层
18岁及以下      24014
19岁到25岁    242199
26岁到30岁    172832
31岁到35岁    172608
36岁到40岁    172804
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岁到25岁    0.259516
26岁到30岁    0.185189
31岁到35岁    0.184949
36岁到40岁    0.185159
41岁及以上     0.159456
Name: UserId, dtype: float64




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


年龄分层
18岁及以下      2.57%
19岁到25岁    25.95%
26岁到30岁    18.52%
31岁到35岁    18.49%
36岁到40岁    18.52%
41岁及以上     15.95%
Name: UserId, dtype: object

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

好了,就讲解到这了~END!

觉得不错的,记得点在看,如果可以转发一下朋友圈就更好了!

往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群请扫码进群(如果是博士或者准备读博士请说明):
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python数据分析实战是一个将Python应用于实际数据分析项目的过程。通过使用Python编程语言和相关工具,可以对数据进行读取、处理、计算、分析建模和可视化,从而得出有价值的结论。 在Python数据分析实战中,你将面临很多问题需要解决。这些问题可能包括数据的清洗和整理,选择合适的统计方法和模型,以及数据可视化等。根据引用和引用的内容,我们可以了解到Python数据分析的流程主要包括读写、处理计算、分析建模和可视化四个部分,每个部分都会使用不同的Python工具。 在数据分析的过程中,你可以使用Python中的各种库和工具来完成不同的任务。比如,你可以使用pandas库来读取和处理数据,使用NumPy库进行数值计算,使用matplotlib或seaborn库进行数据可视化,使用scikit-learn进行机器学习建模等。这些工具可以帮助你高效地进行数据分析,并且可以根据具体的项目需求进行灵活的选择和应用。 在实战中,你可以选择一个具体的数据集或者项目进行分析。例如,你可以分析销售数据,了解销售趋势和关键因素;你可以分析用户行为数据,找出用户喜好和购买偏好;你还可以分析社交媒体数据,了解用户的情感倾向和话题热度等。通过对这些数据的分析,你可以为业务决策提供有力的支持和建议。 总结来说,Python数据分析实战是一个使用Python进行实际数据分析项目的过程。通过合理选择和应用Python工具和库,你可以解决数据分析中的各种问题,并得出有价值的结论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值