python数据分析实例-人口统计折线图

一、前言
最近一直在学python数据科学的相关课程,主要看了《数据科学入门》这本动物书,但这本书是真的只入个门,把数据科学相关的各方面知识介绍了一下,真的只是介绍了一下,想要系统地学习还是得去看更细致的教程和官方文档。

不断地找网上的demo跟着敲,差不多的时候决定自己实现一个简单的案例。于是乎找到了一个很好的数据网站——国家数据。里面的数据支持多种形式的下载。

二、实现
这里是下载了中国近20年的总人口、男性人口、女性人口、城镇人口、乡村人口的数据。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 指标
# 年末总人口(万人)
# 男性人口(万人)
# 女性人口(万人)
# 城镇人口(万人)
# 乡村人口(万人)

# 打开并读取csv文件
file = open("population_20.csv", 'r')

# 读取csv文件到DataFrame
# 这里若不添加参数encoding='gb18030' 会报错'utf-8' codec can't decode byte 0xc4 in position 4: invalid continuation byte
# 即utf-8无法被解析
df = pd.read_csv("population_20.csv", encoding='gb18030')

# 设置DataFrame的行名
df.index = ['总人口', '男性人口', '女性人口', '城镇人口', '乡村人口']

# 输出DataFrame
print(df)

# 获取列名 即之后的横坐标刻度 [::-1]是用来反转的 因为我想要一个2000-2019的顺序
xlist = list(df.columns[::-1])

# 年末总人口
# df.loc[]返回的是一个series
# 这里的末尾使用了[::-1] 即用来反转series
total_population = df.loc['总人口'][::-1]
total_population.plot()

# 男性人口
man_population = df.loc['男性人口'][::-1]
man_population.plot()

# 女性人口
woman_population = df.loc['女性人口'][::-1]
woman_population.plot()

# 城镇人口
city_population = df.loc['城镇人口'][::-1]
city_population.plot()

# 乡村人口
village_population = df.loc['乡村人口'][::-1]
village_population.plot()

# 设置x轴
# 这里卡住了我好久 后面多尝试才发现x轴的刻度是从0开始的 还是要多动手敲才能发现啊
x_ticks = np.linspace(0, 20, 10)
plt.xticks(x_ticks, xlist)

# 设置y轴
y_ticks = np.arange(0, 150000, 10000)
plt.yticks(y_ticks)

# 设置图例位置
plt.legend(loc='lower right')

# 设置标注
plt.annotate('单位:万人', xy=(15.5, 40000))

plt.show()

结果:

三、总结
刚开始学习数据科学的时候,只是不断地在敲demo,或者做例题,敲了很多遍还是记不住matplotlib、numpy、pandas等待这些第三方库。半途也想过先放下去学别的,但好在没有放弃,每天都坚持看一点资料(但也不得不吐槽,现在中文环境的互联网信息污染有点严重,各种爬虫产生的文章不断重复出现)。我也慢慢地收藏了一些很好的教程:
如何高效入门数据科学?(王树义老师的教程真很友好,菜鸟也完全可以跟着一步步实现一个个小demo)
莫烦PYTHON
易百教程
DataSense|DataScience
......
感谢!

刚开始学习的时候,很纠结是多做例题还是直接上手实例,但后来发现两者是分不开的,不敲例题来熟悉语法,会不知道如何实现、实现什么demo,不去自己从头或者模仿构思一个demo的话,也没办法把语法知识串联在一起。还是得多动手敲,再一个是多总结。

就比如这个实例吧,虽然很简单,甚至说直接拿excel操作都更简单。但是也串联了I\O、matplotlib、numpy、pandas和其中series、dataframe云云一些细小的知识点。所以说,还是得不断熟悉记忆语法并同时去做一些实例比较好。

你可能感兴趣的:(python数据分析实例-人口统计折线图)