分析结果
选择Mysql官网上的world数据库,包含所有国家的所属大洲、人口、平均寿命、国民生产总值GNP,得出的结论如下:
- 全球平均寿命37岁,平均国民生产总值1.2万亿美元
- 在美国、中国、韩国、匈牙利、澳大利亚五个国家中,国民生产总值最高的是澳大利亚,平均寿命最高的是美国79.4,人口最多的中国13亿
- 看国民产生总值与人口、平均寿命有没有相关性,都是弱相关,人口相关性高一点
相关系数<0.4显著弱相关; 0.4-0.75中等相关; 大于0.75强相关 - 北美的国民生产总值最高,人口亚洲最多占51%
- 平均寿命65-75最多,84个,占38%
- 国民生产总值和平均寿命都位于前前列的国家是美国、中国、日本
分析步骤
在Mysql中创建world数据库
将MySQL的“world”样例数据库导入到本地中。
1 | CREATE DATABASE world; |
分析可视化world数据
导入外部包
sns.set_style 为微软雅黑,才能在图表中正常显示中文
1 | # plotly库 |
使用pymysql连接查询数据库
1 | connection = pymysql.connect(host = 'localhost', |
将查询的结果加载到DataFrame中
df1 按照原始查询到的数据生成的DataFrame
1 | df1 = pd.DataFrame(result) |
df 是按照平均寿命升序排列的DataFrame1
2
3df = pd.DataFrame( result )
df = df[['Name','Continent','Population','LifeExpectancy','GNP']]
df = df.sort_values(['LifeExpectancy'],ascending=True)
计算汇总统计量
汇总统计量是 数字列的计算结果,包括非空值count数量,最大最小,中位数、均值等。1
df.describe()
先只分析关心的几个国家的数据
1 | # 只分析几个国家的数据 |
结果为:
使用plotly 下拉列表显示关心国家的信息
1 | strace1 = Scatter( |
绘图结果如下图:
计算GNP与平均寿命和人口的相关性
使用corr函数计算相关性,越接近 0,表示越没有相关性。越接近 1,则正相关性越强,越接近 -1,则负相关性越强:GNP与人口的相关性比平均寿命相关性强。
在多变量因素影响时比较有用,例如成绩,房价受多方面因素影响。
1 | df1.corr()['GNP'][['LifeExpectancy','Population']].plot.bar() |
根据洲建立数据透视表分析
pivot_table分析各大洲平均国民生产总值和人口
1 | mean_GNP_Po = df1.pivot_table(['GNP','Population'],index='Continent',aggfunc='mean') |
OutPut:
使用饼状图分析各大洲人口占比
1 | labels=mean_GNP_Po.index |
绘图结果如下:
seaborn绘制各洲GNP平均值对比
seabron是基于python matplotlib的另一个流行绘图库,图形更加丰富,但没有交互功能。
1 | # 每个州GNP平均值对比 |
对全球平均寿命分组绘图
查看平均寿命分组,使用cut离散化到多个面元
使用plotly bar charts进行绘制
添加鼠标移动到bar chart上面的文字1
2
3
4
5
6percent_list = []
sum_size = lf_size.sum()
for i in lf_size:
p = i/sum_size
percent_list.append('Count about:' + format(p,'0.1%')) #将小数转换为百分比
percent_list
1 | trace_bar = go.Bar( |
利用散点图绘制各国的平均寿命和GNP
散点图上每个点对应一个国家,鼠标移动到点上回显示国家名称,平均寿命和GNP。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 绘制散点图
trace1 = Scatter(
x=df['GNP'],
y=df['LifeExpectancy'],
text=country_names,
mode='markers'
)
layout = Layout(
title='Life expectancy vs GNP from MySQL world database',
xaxis=XAxis( type='log', title='GNP' ),
yaxis=YAxis( title='Life expectancy' ),
)
data = Data([trace1])
fig = Figure(data=data, layout=layout)
plotly.offline.iplot(fig, filename='world GNP vs life expectancy')
绘制气泡图
绘制一幅气泡图,气泡大小表示人口的多少,气泡的颜色代表不同的大洲。
定义一个make_text函数 表示鼠标悬停时显示的字符。
1 | sizemode = 'area' |
绘制结果如下: