当前位置: 首页 > news >正文

大数据与云计算学习:数据分析(二)

推荐github上的这个课程来练习下,做个入门PythonData

按照名字将数据分组,总数,平均数,标准差
print(baby_names.groupby('name').agg([np.sum,np.mean,np.std]))

图片描述

哪些名字出现的频率最高?
# 哪些名字出现的频率最高?
print(baby_names.groupby('name').agg({'frequency': sum}))

图片描述

# James, John, Robert, Micheal, Mary...都是耳熟能详的名字
baby_names.groupby('name').agg({'frequency': sum}).sort_values(by=['frequency'], ascending=[0])

图片描述

每年出生的男孩和女孩的个数分别是多少?

pandas.DataFrame.pivot_table

# 使用pivot_table方法查看
freq_by_gender_year = baby_names.pivot_table(index ='year', columns='gender',
                                             values = 'frequency', aggfunc=sum)

图片描述

# 使用tail方法查看最近几年出生人数
print(freq_by_gender_year.tail())

图片描述

# 一行命令即可做出高质量图形
freq_by_gender_year.plot(title='Frequency by year and gender')
plt.show()

图片描述

起名趋势分析
#增加一个变量rank,这个是根据年份性别依据名字出现频率所产生的次序
baby_names['ranked'] = baby_names.groupby(['year','gender'])['frequency'].rank(ascending=False)
print(baby_names.head(10))

图片描述

#计算每个名每年按性别占总出生人数的百分比
def add_pct(group):#自定义
    group['pct'] = group.frequency / group.frequency.sum()*100
    return group
#groupby和apply函数
baby_names = baby_names.groupby(['year','gender']).apply(add_pct)
# 查看新加的百分比(pct)
print(baby_names.head())

图片描述

查看每年最流行的名字所占百分比趋势
###
#起名趋势分析
###
#增加一个变量rank,这个是根据年份性别依据名字出现频率所产生的次序
baby_names['ranked'] = baby_names.groupby(['year','gender'])['frequency'].rank(ascending=False)
# print(baby_names.head(10))

#计算每个名每年按性别占总出生人数的百分比
def add_pct(group):#自定义
    group['pct'] = group.frequency / group.frequency.sum()*100
    return group
# #groupby和apply函数
baby_names = baby_names.groupby(['year','gender']).apply(add_pct)
# # 查看新加的百分比(pct)
# print(baby_names.head())

####
#查看每年最流行的名字所占百分比趋势
####

#将数据分为男孩和女孩
dff = baby_names[baby_names.gender == 'F']
dfm = baby_names[baby_names.gender == 'M']
#获取每年排名第一的名字
rank1m = dfm[dfm.ranked == 1]
rank1f = dff[dff.ranked == 1]

plt.plot(rank1m.year, rank1m.pct, color="blue", linewidth = 2, label = 'Boys')
plt.fill_between(rank1m.year, rank1m.pct, color="blue", alpha = 0.1, interpolate=True)
plt.xlim(1880,2012)
plt.ylim(0,9)
plt.xticks(scipy.arange(1880,2012,10), rotation=70)
plt.title("Popularity of #1 boys' name by year", size=18, color="blue")
plt.xlabel('Year', size=15)
plt.ylabel('% of male births', size=15)
plt.show()
plt.close()

图片描述

plt.plot(rank1f.year, rank1f.pct, color="red", linewidth = 2, label = 'Girls')
plt.fill_between(rank1f.year, rank1f.pct, color="red", alpha = 0.1, interpolate=True)
plt.xlim(1880,2012)
plt.ylim(0,9)
plt.xticks(scipy.arange(1880,2012,10), rotation=70)
plt.title("Popularity of #1 girls' name by year", size=18, color="red")
plt.xlabel('Year', size=15)
plt.ylabel('% of female births', size=15)
plt.show()
plt.close()

图片描述

参考

pandas教程:agg分组多种计算
pandas 0.21.1 documentation
图片描述

相关文章:

  • 3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令
  • 剑指offer 矩阵覆盖
  • 从0开始弄一个面向OC数据库--终结篇
  • C++ Exercises(一)
  • restful+springmvc+mybatis+ webservice 分布式架构
  • 有歧义(AMBIGUOUS LAYOUT)的约束布局调试方法2
  • CSU-ACM2018寒假集训选拔-入门题
  • 云数据库 Redis 版功能特性
  • bootstrap和elementUI真的会冲突
  • LeetCode:26. Remove Duplicates from Sorted Array(Easy)
  • jvm 内存分配
  • 从Storm和Spark 学习流式实时分布式计算的设计
  • Nginx + Tomcat + HTTPS 配置原来不需要在 Tomcat 上启用 SSL 支持
  • 应用多级缓存模式支撑海量读服务
  • iOS 兼容多个有crash 收集机制的SDK
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • canvas绘制圆角头像
  • Javascripit类型转换比较那点事儿,双等号(==)
  • linux学习笔记
  • oschina
  • 安装python包到指定虚拟环境
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 汉诺塔算法
  • 聊聊hikari连接池的leakDetectionThreshold
  • 数据可视化之 Sankey 桑基图的实现
  • 微服务框架lagom
  • 项目实战-Api的解决方案
  • #QT(TCP网络编程-服务端)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (02)vite环境变量配置
  • (1)(1.13) SiK无线电高级配置(六)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (分布式缓存)Redis持久化
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)linux下的时间函数使用
  • (转载)hibernate缓存
  • ... 是什么 ?... 有什么用处?
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net 生成二级域名
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net各种迷惑命名解释
  • .Net接口调试与案例
  • .Net面试题4
  • .Net中的设计模式——Factory Method模式
  • ??myeclipse+tomcat
  • @Autowired 与@Resource的区别
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [20170705]lsnrctl status LISTENER_SCAN1