我会根据“从零学Python系列之数据处理编程实例(一)”的文章内容给出完整攻略。
一、技能要求和准备工作
在这篇文章中,作者首先提到了技能要求和准备工作:
技能要求
- 熟练掌握 Python 基础语法;
- 了解 pandas 库的基本使用方法。
准备工作
- 安装 Python 3;
- 安装 pandas 库;
- 确保已经能够熟练使用 Jupyter Notebook 或者其他 Python 编辑器。
作者提到,警惕有些人认为自己“语法很牛”,但是“数据处理编程实例”这种文章还是太难了。文章并不是为了最终的结果而写的,而是为了让大家学习编程过程的方法。因此,如果你不能理解其中某一步的编程过程,可以一步一步地分析并理解,而不是跳过这一步。
二、数据准备
在这篇文章中,作者选用的数据是“北京市公交车线路”数据。作者首先介绍了如何下载数据的方法,然后在 Jupyter Notebook 中使用了 pandas
库来读取数据:
# 读取xlsx文件
df_raw = pd.read_excel('../data/bus_lines_data.xlsx', sheet_name='Sheet1')
因为“北京市公交车线路”数据中的字段名有点儿奇怪,因此作者针对字段名进行了必要的修改。
df_raw.columns = ['公交线路', '起点站', '终点站', '首班车时间', '末班车时间', '发车间隔']
三、数据分析
在这篇文章中,作者主要对“北京市公交车线路”数据进行了以下分析:
- 分析数据中的缺失值;
- 对公交线路、首班车时间、末班车时间等字段进行去重;
- 对发车间隔进行了一些基本的统计分析。
分析数据中的缺失值
# 统计每个字段中的缺失值
df_raw.isnull().sum()
对公交线路、首班车时间、末班车时间等字段进行去重
# 公交线路去重
df_lines = df_raw.drop_duplicates(subset='公交线路')
# 首班车时间去重
df_departure_time = df_raw.drop_duplicates(subset='首班车时间')
# 末班车时间去重
df_arrival_time = df_raw.drop_duplicates(subset='末班车时间')
对发车间隔进行了一些基本的统计分析
# 最大发车间隔
max_interval = df_raw['发车间隔'].max()
print('最大发车间隔: {}分钟'.format(max_interval))
# 最小发车间隔
min_interval = df_raw['发车间隔'].min()
print('最小发车间隔: {}分钟'.format(min_interval))
# 平均发车间隔
avg_interval = df_raw['发车间隔'].mean()
print('平均发车间隔: {:.2f}分钟'.format(avg_interval))
# 中位数发车间隔
median_interval = df_raw['发车间隔'].median()
print('中位数发车间隔: {}分钟'.format(median_interval))
# 所有发车间隔总和
sum_interval = df_raw['发车间隔'].sum()
print('所有发车间隔总和: {}分钟'.format(sum_interval))
四、数据可视化
在这篇文章中,作者使用了 matplotlib
和 seaborn
库来进行数据可视化。
条形图
这里是一个绘制 df_lines
条形图的代码示例:
plt.bar(df_lines['公交线路'], df_lines['发车间隔'])
plt.xticks([])
plt.title('北京市公交车各线路发车间隔对比')
plt.ylabel('发车间隔(分钟)')
plt.show()
直方图
这里是一个绘制 df_raw
直方图的代码示例:
sns.distplot(df_raw[df_raw['发车间隔'].notnull()]['发车间隔'], kde=False)
plt.title('北京市公交车发车间隔直方图')
plt.xlabel('发车间隔(分钟)')
plt.show()
五、总结
在本文中,作者首先介绍了应该掌握的技能和准备工作,然后对“北京市公交车线路”数据进行了分析,并通过数据可视化的方式展示了分析结果。这篇文章对于 Python 初学者来说,是一个非常好的例子,它展示了如何掌握基本的数据处理技能,并使用 Python 进行可视化分析。