ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

统计年龄分布情况(5岁的间隔统计),绘制出年龄分布图。

2021-12-20 11:02:49  阅读:203  来源: 互联网

标签:df 分布图 datetime pd print 年龄 data 统计


3.统计年龄分布情况(5岁的间隔统计),绘制出年龄分布图。

第一个
这个和第一个非常相似,难点在于需要将出生年月转化为年龄。

data = data.copy()
data['年龄'] = [dt.datetime.today().year - i.year for i in pd.to_datetime(data["出生年月"])] 

如果不添加data.copy()会报错

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[row_indexer,col_indexer] = value instead

完整代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
# 读取 CSV文件生成DataFrame
df = pd.read_csv('D:/luohu3.csv')
print(df)

print(df.info())   # 获取 DataFrame 的摘要
print(df.head())     # 根据位置返回对象的前n行信息(默认值为5) ,用于快速测试数据集
print(df.describe())   # 生成描述性统计数据,总结数据集分布的集中趋势,分散和形状,不包括 NaN值。
# 数据预处理
data = df.dropna(0)    # 删除所有包含空值的行或列
print(data.info())
# data = df.drop_duplicates()
# print(data.info())

# 获取年龄数据
data = data.copy()
data['年龄'] = [dt.datetime.today().year - i.year for i in pd.to_datetime(data["出生年月"])]    # 日期数据如何处理
x = data["年龄"]
# 设置统计分值段范围
print(data.describe())       # 查看最大值与最小值
bins = np.arange(35, 65, 5)
time_bins = pd.cut(x, bins)    # 对数据进行离散化处理
print(time_bins)
# 按积分分割区间进行分组统计
df1 = data.groupby(time_bins)["年龄"].count()
print(df1)
# 绘制图形
df1.plot(kind="bar", rot=0)
plt.rcParams['font.sans-serif'] = ['Kaiti']   # 用来正常显示中文(黑体)常用字体包括: Kaiti-楷体; FangSong-仿宋; Microsoft YaHei-微软雅黑
plt.rcParams['axes.unicode_minus'] = False
plt.show()

在这里插入图片描述

标签:df,分布图,datetime,pd,print,年龄,data,统计
来源: https://blog.csdn.net/qq_46556714/article/details/122036518

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有