1.创建数据源
在python中pandas进行数据分析与可视化(1)里,数据源是手动创建,数据量也只有几条,这在实际工作中其实是不太常见的,所以这次我们选择生成一组随机数,作为数据源
# 导入所有需要的库
import pandas as pd
from numpy import random
import matplotlib.pyplot as plt
# 婴儿名字的初始值
names = ['Bob','Jessica','Mary','John','Mel']
random.seed(500)
random_names = [names[random.randint(low=0,high=len(names))] for i in range(1000)]
# 显示前10个名字
print(random_names[:10])
这时就能看到已经生成了1000条婴儿名称
再给这个1000个名词生成随机的数值,表示每个名字出现了多少次,重复的名字则表示由不同的地方获取
births = [random.randint(low=0,high=1000) for i in range(1000)]
print(births[:10])
之后可以用zip
函数将这两个列表合并在一起,获取一个更容易理解的列表
BabyDataSet = list(zip(random_names,births))
print(BabyDataSet[:10])
2.数据源表格化
因为在数据分析的时候,往往会使用表格的形式进行处理,所以我们需要先把数据源转换成表格的形式,这里会用到DataFrame
对象,我们可以把这个对象理解为包含了BabyDataset
的内容而格式非常象一个 sql 表格或者 Excel 的数据表
df = pd.DataFrame(data = BabyDataSet, columns=['Names', 'Births'])
print(df)
3.数据分析-分组求和
现在的数据源是每个名称都有多条记录,那就可以考虑将其汇总,看看每个名称总共有多少次数
# 对name求和计数
name = df.groupby('Names')
print(name.sum())
4.数据可视化
在对名称分组求和之后,可以通过数据可视化的方式进行展示
name.sum()['Births'].plot.bar()
df.sort_values(by='Births', ascending=False)
plt.show()