Pandas实践:南京地铁数据处理分析

简介: Pandas实践:南京地铁数据处理分析

上期,我们用python爬虫实现了对南京地铁每日客流量数据的爬取,详见Python:南京地铁每日客流数据的爬虫实现。本期,我们对爬取后的数据进行相应的处理。

一、Text文档处理

c8bdcca0dcea3c8f980385d4ace98a93.png

我们把爬取的text文件翻到最后,发现一些不相关的表述,内容不多,我们直接删掉就行,变成这样:

e0c222458dd22eaeff1f38bc14b0cb16.png

然后,我们用python把日期和客流量给提取出来,具体代码为:

import reimport pandas as pd
# 定义一个函数来处理文本文件def process_text_file(file_path):    # 用于存储提取的数据    dates = []    numbers = []
    # 打开文件    with open(file_path, 'r', encoding='utf-8') as file:        for line in file:            # 使用正则表达式匹配日期            date_matches = re.findall(r'南京地铁(.*?)客运量', line)            dates.extend(date_matches)
            # 使用正则表达式匹配数字(包括小数)            number_matches = re.findall(r'客运量(.*?),其中', line)            numbers.extend([float(num) for num in number_matches])
    return dates, numbers
# 调用函数并传入文件路径file_path = 'data.txt'dates, numbers = process_text_file(file_path)
print(len(dates))print(len(numbers))
df=pd.DataFrame({"Dates":dates,"客运量":numbers})df

运行结果为:

ce6f03ec261f76220cc7e30de3f6527d.png

1000多条数据,但有个问题,这个Dates栏目里没有年份啊? ,没关系,我们用pandas把年份加上。二、Pandas实战数据处理1. 在日期栏目里加上年份先找到所有1月1日的位置

#定位数据中1月1日的位置df[df['Dates'].str.contains('^1月1日')]

a247b942dc92dcbfaf7afcf2e9512efa.png

什么?又有新bug,有个里面1月1日以后还加了个“全线网”?,这个留到后面处理,先加上年份,pandas切片处理


#对对应年份的月份加上年份df.loc[:127, 'Dates'] = df.loc[:127, 'Dates'].apply(lambda x: '2024年' + x)df.loc[128:492, 'Dates'] = df.loc[128:492, 'Dates'].apply(lambda x: '2023年' + x)df.loc[493:855, 'Dates'] = df.loc[493:855, 'Dates'].apply(lambda x: '2022年' + x)df.loc[856:, 'Dates'] = df.loc[856:, 'Dates'].apply(lambda x: '2021年' + x)
df

把“全线网”、“线网”、空格给去掉:

df['Dates'] = df['Dates'].str.replace(r' ', '', regex=True)df
df['Dates'] = df['Dates'].str.replace(r'(线网|全线网)', '', regex=True)

8e359564e4d0a2fa14311b50ba36abfc.png

2. 按月份分析一下客流量

首先,我们把df中Dates一栏中的日期变成只有“月”的内容,方便我们用groupby来进行统计

df1=df.copy(deep=True)df1['Dates']=df1['Dates'].str.replace(r'\d+日', '', regex=True)df1

20e8bd0bee3c9fde0d0ba8a7ffc17a4f.png

用groupby来进行汇总每月的客流量,并给予新的Dateframe:df_month

df_month=df1.groupby('Dates').sum().reset_index()df_month

10df3e2fb681a0a7c8cc65e3401a0c1f.png

3. 找出最大客流量与最小客流量的一天3.1 最大客流量:

df[df['客运量']==df['客运量'].max()]

cd6f44852bd8cad200594b2dd1e7b5da.png

查了一下,该天为2024年清明节假期。3.2 最小客流量:

df[df['客运量']==df['客运量'].min()]


94b9936578693495b9885223fd703592.png

看了一下新闻,发现2021年7-8月期间,南京处于疫情期间,地铁客运量少是有原因的:

e225b4a47157af11f0148cf015f3556f.png

4. 用Matplotlib画图看看每月客流量图首先,我们对日期进行一个简单的处理,按照月份排序

df_month['Dates'] = pd.to_datetime(df_month['Dates'],format='%Y年%m月')df_sorted = df_month.sort_values(by='Dates')df_sorted

89301e3383860f0cd110c9ce9219bc2c.png

画出月度客流量的折线图


import pandas as pdimport matplotlib.pyplot as pltfrom datetime import datetimeimport numpy as np
from matplotlib.pyplot import rcParamsrcParams['font.sans-serif'] = ['SimHei']rcParams['axes.unicode_minus'] = False
# 绘制折线图plt.figure(figsize=(10,5))  # 设置图表大小plt.plot(np.array(df_sorted['Dates']), np.array(df_sorted['客运量']))  # 绘制折线图
# 设置图表标题和轴标签plt.title('客运量随月度变化')plt.xlabel('月度')plt.ylabel('客运总量')
# 设置x轴的刻度标签旋转,以便更好地显示日期plt.xticks(rotation=45)
# 显示网格plt.grid(True)
# 显示图表plt.tight_layout()  # 调整布局plt.show()

c32cf530f8b02066e4d4223cfc836f90.png

三、结语

以上就是我们使用pandas工具对南京地铁数据进行的一个简单的数据处理分析,当然,各位读者,可以通过截取某一年(比如2023年)的数据进行后续分析,也可以单独截取出每一条线路的客流量进行更深入的分析,pandas是一个强大的Python数据分析工具库,大家试着练习起来,天天向上文中的数据文件,我放在了百度网盘中,具体链接如下:

链接: https://pan.baidu.com/s/1xJu2Q9yU4T5h-Dc6s4FAWw 提取码: 8888 复制这段内容后打开百度网盘手机App,操作更方便哦

相关文章
|
5月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
438 0
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
623 0
|
7月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
618 0
|
9月前
|
运维 数据挖掘 数据处理
Pandas时间数据处理:从基础到进阶的实战指南
Pandas时间数据处理涵盖了从基础到高级的全面功能。其核心由Timestamp、DatetimeIndex、Period和Timedelta四个类构建,支持精准的时间点与区间操作。内容包括时间数据生成(字符串解析与序列生成)、时间索引与切片、高级运算(偏移重采样与窗口计算)、时区处理、周期性数据分析及实战案例(如智能电表数据)。此外,还涉及性能优化技巧和未来展望,帮助用户高效处理时间序列数据并应用于预测分析等场景。
422 1
|
9月前
|
传感器 安全 数据处理
Pandas时间数据处理:从基础到进阶的实战指南
本文深入讲解Pandas时间数据处理技巧,从时间对象转换到高性能计算全面覆盖。通过真实案例拆解,掌握Timestamp与Period的核心概念、时间序列生成、重采样方法及窗口函数应用。同时剖析时区处理、性能优化策略及常见陷阱解决方案,并展望Pandas 2.0的时间处理新特性。内容强调“时间索引优先”原则,助你高效分析股票K线、用户行为等时间序列数据。
318 0
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
295 12
|
数据可视化 数据挖掘 数据处理
Pandas高级数据处理:数据可视化进阶
Pandas是数据分析的强大工具,能高效处理数据并与Matplotlib、Seaborn等库集成,实现数据可视化。本文介绍Pandas在绘制基础图表(如折线图)和进阶图表(如分组柱状图、热力图)时的常见问题及解决方案,涵盖数据准备、报错处理、图表优化等内容,并通过代码案例详细解释,帮助读者掌握数据可视化的技巧。
309 13
|
数据采集 SQL 数据可视化
Pandas高级数据处理:交互式数据探索
Pandas是Python中流行的数据分析库,提供丰富的数据结构和函数,简化数据操作。本文从基础到高级介绍Pandas的使用,涵盖安装、读取CSV/Excel文件、数据查看与清洗、类型转换、条件筛选、分组聚合及可视化等内容。掌握这些技能,能高效进行交互式数据探索和预处理。
209 6
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
381 8
|
存储 数据挖掘 数据处理
Pandas高级数据处理:数据安全与隐私保护
在数字化时代,数据安全与隐私保护至关重要。本文介绍使用Pandas进行数据分析时常见的安全问题及解决方案,包括数据泄露风险、权限报错、数据类型转换错误等,并结合代码案例详细讲解如何避免和解决这些问题。同时,探讨高级策略如访问控制、匿名化、差分隐私及加密传输存储,确保数据分析合法合规。
399 7

热门文章

最新文章