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,操作更方便哦

相关文章
|
1天前
|
数据挖掘 数据处理 开发者
Pandas高级数据处理:实时数据处理
本文介绍了Pandas在实时数据处理中的应用,涵盖基础概念、常见问题及解决方案。Pandas是Python中强大的数据分析库,支持流式读取和增量更新数据,适用于大规模数据集的处理。通过分块读取、数据类型优化等方法,可有效解决内存不足等问题。文中还提供了代码示例,帮助读者更好地理解和掌握Pandas在实时数据处理中的使用技巧。
33 15
|
4天前
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
57 31
|
5天前
|
数据采集 并行计算 数据可视化
Pandas高级数据处理:数据报告生成实战指南
数据报告生成面临数据质量、计算性能、呈现形式和自动化等核心挑战。常见问题包括缺失值导致统计失真、内存溢出及可视化困难。解决方案涵盖数据清洗、分块处理、安全绘图模板等。通过模块化设计、异常处理机制和性能优化策略,如使用`category`类型、并行计算等,可大幅提升效率。最佳实践建议建立数据质量检查清单、版本控制和自动化测试框架,确保系统具备自适应能力,提升报告生成效率300%以上。
38 12
|
6天前
|
数据可视化 数据挖掘 数据处理
Pandas高级数据处理:交互式数据探索
Pandas 是数据分析中常用的数据处理库,提供了强大的数据结构和操作功能。本文从基础到高级,逐步介绍 Pandas 中交互式数据探索的常见问题及解决方案,涵盖数据读取、检查、清洗、预处理、聚合分组和可视化等内容。通过实例代码,帮助用户解决文件路径错误、编码问题、数据类型不一致、缺失值处理等挑战,提升数据分析效率。
76 32
|
7天前
|
存储 安全 数据处理
Pandas高级数据处理:数据安全与隐私保护
在数据驱动的时代,数据安全和隐私保护至关重要。本文探讨了使用Pandas进行数据分析时如何确保数据的安全性和隐私性,涵盖法律法规要求、用户信任和商业价值等方面。通过加密、脱敏、访问控制和日志审计等技术手段,结合常见问题及解决方案,帮助读者在实际项目中有效保护数据。
52 29
|
8天前
|
存储 安全 数据处理
Pandas高级数据处理:数据加密与解密
本文介绍如何使用Pandas结合加密库(如`cryptography`)实现数据加密与解密,确保敏感信息的安全。涵盖对称和非对称加密算法、常见问题及解决方案,包括密钥管理、性能优化、字符编码和数据完整性验证。通过示例代码展示具体操作,并提供常见报错的解决方法。
47 24
|
10天前
|
存储 算法 数据处理
Pandas高级数据处理:数据压缩与解压
本文介绍 Pandas 中的数据压缩与解压技术,探讨其在大数据集存储、远程传输和备份归档中的应用场景。Pandas 支持多种压缩格式(如 `.gzip`、`.bz2`、`.zip`),通过 `compression` 参数轻松实现数据的压缩与解压。文中还提供了常见问题的解决方案,如文件扩展名不匹配、内存不足和性能优化,并介绍了自动检测压缩格式和组合压缩加密的高级技巧。掌握这些功能可显著提升数据处理效率。
46 20
|
11天前
|
监控 物联网 数据处理
Pandas高级数据处理:数据流式计算
本文介绍了如何使用 Pandas 进行流式数据处理。流式计算能够实时处理不断流入的数据,适用于金融交易、物联网监控等场景。Pandas 虽然主要用于批处理,但通过分块读取文件、增量更新 DataFrame 和使用生成器等方式,也能实现简单的流式计算。文章还详细讨论了内存溢出、数据类型不一致、数据丢失或重复及性能瓶颈等常见问题的解决方案,并建议在处理大规模数据时使用专门的流式计算框架。
138 100
Pandas高级数据处理:数据流式计算
|
12天前
|
数据采集 数据挖掘 物联网
Pandas高级数据处理:实时数据处理
本文介绍了如何使用Pandas进行实时数据处理,涵盖从基础到高级的技巧。Pandas作为Python中流行的数据处理库,提供了高效的DataFrame和Series结构,适用于金融、社交媒体和物联网等领域的数据分析。文章详细讲解了数据读取、清洗、转换及常见问题的解决方案,如内存不足、数据不一致和性能瓶颈,并提供了避免常见报错的方法,帮助读者更高效地处理实时数据。
53 15
|
13天前
|
存储 数据采集 数据挖掘
Pandas高级数据处理:数据流处理
Pandas是Python中高效处理数据分析的流行库。随着数据量增长,传统的批量处理方式难以满足实时性需求,掌握Pandas的数据流处理技术尤为重要。常见问题包括文件格式不兼容、内存不足、缺失值和重复数据等。针对这些问题,可以通过指定参数读取文件、分块读取、填充或删除缺失值、去除重复数据、转换数据类型等方法解决。此外,还需注意KeyError、ValueError和MemoryError等常见报错,并采取相应措施。掌握这些技巧可提高数据处理效率和准确性。
54 26