知识点

在全美婴儿名字案例中,使用到的方法有:

按照sex分组按照births属性求和:groupby("sex").births.sum()

concat()用法:第一个参数以列表形式添加

pivot_table透视表制作

image.png

直接添加某列属性diff:group['diff']=group['M] - group['F']

apply()用法

查看DF数据信息:info()

不同方式绘制可视图:

image.png

image.png

查看DF数据框中的所有信息value,除去索引和属性

累计求和:cumsum()

归一化后寻找某个分界点的位置:searchsorted(0.5)

对df中的name属性使用func函数:df.name.map(func)

归一化处理:df/df.sum()

挑选不重复元素:unique()

字符串转化:str.lower():一定还要带上str

字符串中是否包含:str.contains()

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

# 创建数据指定列属性

data = pd.read_csv(r'D:\Python\datalearning\利用Python进行数据分析\pydata-book\datasets\babynames\yob1880.txt',

names=['name', 'sex', 'births'])

data.head()

image.png

# groupby使用:通过指定一个属性来求另一个的和

data.groupby('sex').births.sum()

image.png

# 同一个路径下面,多个TXT文件合并封装到一个DF里面

years = range(1880, 2011)

pieces = []

columns = ['name', 'sex', 'births']

for year in years:

path = r'D:\Python\datalearning\利用Python进行数据分析\pydata-book\datasets\babynames\yob{}.txt'.format(year)

frame = pd.read_csv(path, names=columns)

# 增加一列数据,属性是year;frame['year']中的

frame['year'] = year

pieces.append(frame)

# concat方法:默认按行组合,加上ignore_index=True取消原始行号

# concat 第一个参数必须是序列或者S或者DF数据,并且是列表的形式

# 上面将所有的frame放进pieces中

names = pd.concat(pieces, ignore_index=True)

image.png

数据透视pivot_table

total_births = names.pivot_table('births', index='year', columns='sex', aggfunc=sum)

total_births.head()

image.png

增加一列数据

# prop列相当于是指定名字相对于总出生数的比例

def add_group(group):

group['prop'] = group.births / group.births.sum()

return group

# 先分组,再利用函数求比例

names = names.groupby(['year', 'sex']).apply(add_group)

names.groupby(['year', 'sex']).prop.sum().head()

image.png

image.png

# DIY模式

pieces = []

for year, group in grouped:

pieces.append(group.sort_values(by='births', ascending=False)[:1000])

top1000 = pd.concat(pieces, ignore_index=True)

分析命名趋势

image.png

# 挑选出4个名字

subset = total_births[['John', 'Harry', 'Mary', 'Marilyn']]

subset.head()

# 绘图

subset.plot(subplots=True, figsize=(12, 10), grid=False,

title="Number of births per year")

image.png

计算最流行的1000个名字的比例,按照year和sex聚合并绘图

table = top1000.pivot_table("prop", index='year',

columns='sex', aggfunc=sum)

table.plot(title='Sum of table1000.prop by year and sex',

yticks=np.linspace(0, 1.2, 13), xticks=range(1880, 2020, 10))

image.png

# 统计2010年男孩的名字;prop的降序排列

df = boys[boys.year == 2010]

df.head(20)

# prop降序之后,通过累计求和,找出哪些名字加起来等于0.5

# cumsum()累计求和

prop_cumsum = df.sort_values(by='prop', ascending=False).prop.cumsum()

prop_cumsum[:10]

image.png

diversity = top1000.groupby(['year', 'sex']).apply(get_quantile_count)

diversity = diversity.unstack('sex')

image.png

最后一个字母的变革

# 定义一个lambda函数,得到最后一个字母

get_last_letter = lambda x: x[-1]

# 通过map函数将上面的lambda应用在其中

last_letters = names.name.map(get_last_letter)

# 给last_letters命名为last_letter

last_letters.name = 'last_letter'

table = names.pivot_table('births', index=last_letters,

columns=['sex', 'year'], aggfunc=sum)

# 归一化处理

letter_prop = subtable / subtable.sum()

letter_prop

fig, axes = plt.subplots(2,1,figsize=(10 ,8))

letter_prop['M'].plot(kind='bar', rot=0, ax=axes[0], title='Male')

letter_prop['F'].plot(kind='bar', rot=0, ax=axes[1], title='Female',legend=False)

image.png

image.png

image.png

男孩名字变成女孩名字

# unique找出所有不重复的名字

all_names = pd.Series(top1000.name.unique())

# 先把名字变成小写,再看是否包含lesl

lesley_like = all_names[all_names.str.lower().str.contains('lesl')]

# 通过isin来过滤其他名字

filtered = top1000[top1000.name.isin(lesley_like)]

# 通过name属性来分组,再选择根据births属性来统计求和

filtered.groupby('name').births.sum()

image.png

# 按照性别和年度进行聚合,年度进行规范化处理

table = filtered.pivot_table("births", index='year',

columns='sex', aggfunc='sum')

table = table.div(table.sum(1), axis=0)

table.tail()

image.png

python人名最多数统计_《利用Python进行数据分析》-全美婴儿姓名案例相关推荐

  1. python获取指定端口流量_利用python获取nginx服务的ip以及流量统计信息

    #!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log ...

  2. 利用python进行词频统计_利用python做词频计算(word-count)

    主要针对英文文本做出词频计算,因为英文是用空格作为词语分割的.中文需要用到分词的库. 下面就用奥巴马的一片演讲做词频计算 1,分析的文本 speech_etxt = ''' My fellow cit ...

  3. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  4. python画一颗心_利用python画一颗心的方法示例

    前言 Python一般使用Matplotlib制作统计图形,用它自己的说法是'让简单的事情简单,让复杂的事情变得可能'.用它可以制作折线图,直方图,条形图,散点图,饼图,谱图等等你能想到的和想不到的统 ...

  5. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  6. python经纬度获取县名_利用 Python 批量获取县镇运输距离

    起因 最近做规划项目,领导让查出某几个市的所有乡镇级行政区域,距离所在县级行政中心的交通运输距离.想着也不是啥难事儿,高德地图一搜就有. 当我把各市行政区划统计完,发现一共有五百多个乡镇,意味着要在地 ...

  7. python对excel数据统计_用 python实现简单EXCEL数据统计

    原博文 2016-11-24 23:06 − 任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlr ...

  8. python用户输入列表有缺陷_利用Python对Jira缺陷进行管理操作

    转自:51testing 1.1.概要 本文主要内容是教大家学习如何利用Python对Jira缺陷进行管理操作. 在平时的测试中,大家对于缺陷管理平台一定不陌生,平时的缺陷都要去平台进行操作.今天我们 ...

  9. python怎么读取sav格式_利用Python读取外部数据文件

    利用Python读取外部数据文件 [color=rgb(0, 0, 0) !important]刘顺祥 [color=rgb(0, 0, 0) !important]摘要: 不论是数据分析,数据可视化 ...

  10. python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...

最新文章

  1. 给动态生成的按钮添加ajax,Ajax/Javascript动态创建按钮的问题
  2. mysql 物理备份工具_mysql物理备份工具Xtrabackup安装配置
  3. 有关FPGA比较好的文章收藏(备忘)
  4. 先睹为快:Visual Studio 11测试版已于2.29在微软官方网站正式发布
  5. Django值应用和分布式路由
  6. 无锁数据结构三:无锁数据结构的两大问题
  7. 系统背景描述_【计算机论文】管件加工管理系统和数据库的结构探析
  8. java中线程调度遵循的原则_深入理解Java多线程核心知识:跳槽面试必备
  9. 3dmax批量导入obj_ArcGIS 与 3DMax 结合建模
  10. c ++ stl_获取列表的第一个和最后一个元素| C ++ STL
  11. Mysql主从占用大量cpu_Mysql占用过高CPU时的优化手段
  12. 通过PS修出自然的大长腿
  13. IOS实现SpotLight搜索 让你的APP支持SpotLight搜索
  14. cytoscape使用方法_Cytoscape的使用方法(带图片解析)
  15. Marvell 88E1111 百兆工程 (FPGA)
  16. react基础_React基础
  17. EtherCAT运动控制器在数控加工手轮随动中的应用之C++
  18. File Struct 上传JPG格式图片变成tmp 服务器上传文件名字随机起
  19. 从什么地方获取大数据_在哪里找大数据
  20. 不得不说!这个让我受益良多的思维利器!

热门文章

  1. MyBatis中拦截器(Interceptor)实现原理分析
  2. java并发-独占锁与共享锁
  3. bzoj3453: tyvj 1858 XLkxc(拉格朗日插值)
  4. 《逻辑与计算机设计基础(原书第5版)》——1.4 算术运算
  5. 《UNIXLinux程序设计教程》一1.3 UNIX基本概念
  6. 《深入理解OSGi:Equinox原理、应用与最佳实践》一2.1 OSGi规范概要
  7. CentOS7源码安装Python3
  8. Zipkin-1.19.0学习系列2:Nodejs范例(Client Send,Client Receive))
  9. Spring任务调度实战之Quartz Simple Trigger
  10. 热点聚焦:企业上ERP之前是否需要先进行流程梳理?