广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python数据分析之公交IC卡刷卡分析
  • 959
分享到

python数据分析之公交IC卡刷卡分析

2024-04-02 19:04:59 959人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、背景二、任务要求三、使用步骤四、总结一、背景 交通大数据是由交通运行管理直接产生的数据(包括各类道路交通、公共交通、对外交通的刷卡、线圈、卡口、GPS、视频、图片等数据)、交

一、背景

交通大数据是由交通运行管理直接产生的数据(包括各类道路交通、公共交通、对外交通的刷卡、线圈、卡口、GPS、视频、图片等数据)、交通相关行业和领域导入的数据(气象、环境、人口、规划、移动通信手机信令等数据),以及来自公众互动提供的交通状况数据(通过微博、微信、论坛、广播电台等提供的文字、图片、音视频等数据)构成的。

现在给出了一个公交刷卡样例数据集,包含有交易类型、交易时间、交易卡号、刷卡类型、线路号、车辆编号、上车站点、下车站点、驾驶员编号、运营公司编号等。试导入该数据集并做分析。

二、任务要求

1.分别计算早上7点前和晚上10点之后的公共交通上车刷卡量;

2.绘制并输出当天各小时公交刷卡量变化的折线图;

3.构造一个乘客搭乘时间分析函数,计算各小时区间乘客的平均公交搭乘时间及其标准差;

4.绘制并输出不同类型的一卡通交易数量及其占比的饼图;

5.分别构造线路类、司机类和车辆类,将线路编号1101–1120的线路及其所对应的司机和车辆信息输出为20个txt文档,并保存到一个文件夹中;

6.分析搭载乘客情况,确定服务乘客人次最多的10个司机、10条线路和10台车辆。

三、使用步骤

1.引入库

代码如下:


from numpy import *
import pandas as pd
import matplotlib.pyplot as plt
from collections import Counter

2.导入数据

代码如下:


# 导入csv文件
ICdata = pd.read_csv('D:/人工智能编程语言/python - 作业4/ICData.csv', sep=',', encoding='utf-8')

3.任务一

代码如下:


# 1.分别计算早上7点前和晚上10点之后的公共交通上车刷卡量;
ICdata['交易时间'] = pd.to_datetime(ICdata['交易时间'], fORMat='%Y/%m/%d %H:%M:%S')  # 将字符串类型转换为datetime类型
paytime1 = ICdata[ICdata.交易时间 < '2018/4/1 07:00:00']
paytime2 = ICdata[ICdata.交易时间 > '2018/4/1 22:00:00']
print('早上七点前的刷卡量为:', paytime1.交易时间.count())  # 输出在早上七点前的刷卡量
print('晚上十点后的刷卡量为:', paytime2.交易时间.count())  # 输出在晚上十点后的刷卡量
print('\n')

输出:

在这里插入图片描述

4.任务二

代码如下:


# 2.绘制并输出当天各小时公交刷卡量变化的折线图
timetable = []
ICdata['hour'] = ICdata['交易时间'].dt.hour  # 加多一列hour,并赋值为标准数据里的小时
time = ICdata.groupby(['hour']).count()  # 通过data.groupby(‘hour').count()按小时进行分组,并统计数目
timetable = time.iloc[:, 2]  # 取出一列数据
timetable.plot()  # 画出折线图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文输出出现乱码
plt.title('当天内各小时刷卡量')  # 设置总标题
plt.xlabel('Hour')  # 设置x坐标标题
plt.ylabel('Amount')  # 设置y坐标标题
plt.show()  # 展示折线图
del ICdata['hour']  # 将hour列删除

输出:

在这里插入图片描述

5.任务三

代码如下:


# 3.定义一个计算乘客搭乘时间平均数和标准差的函数
def fun_time(x):
    time_list = []
    ICdata['hour'] = ICdata['交易时间'].dt.hour  # 加多一列hour,并赋值为标准数据里的小时
    t = list(ICdata['hour'])  # 将hour列取出并转换为列表
    for i in range(200000):
        if t[i] == x:   # 记录该小时内乘客的搭乘时间
            time_list.append(abs(ICdata['上车站点'][i]-ICdata['下车站点'][i]))
    aver = mean(time_list)  # 计算平均数
    std_t = std(time_list)  # 计算标准差
    print(x, '时内乘客搭乘的平均时间为:%.3f站 ' % aver, '标准差为:%.3f站' % std_t)
    print('\n')

# 函数实现:
a = int(input("请输入一个整数代表该小时:"))
fun_time(a)  # 调用fun_time函数,传入参数a

输出:

在这里插入图片描述

6.任务四

代码如下:


# 4.绘制并输出不同类型的一卡通交易数量及其占比的饼图
count = Counter(ICdata.iloc[:, 0])  # 统计各刷卡类型总数
list_key = []  # 创建列表存储刷卡类型
list_value = []  # 创建列表存储刷卡总数量
print('不同类型的一卡通交易数量:')
for key, value in count.items():  # 将counter类型元素分别提取到两个列表内
    list_key.append(key)
    list_value.append(value)
    print('%5d' % key, ':', value)  # 输出刷卡类型及对应数量
print('\n')
plt.figure(figsize=(6, 6), dpi=100)  # 创建画布
colors = ['b', 'r', 'g', 'y']  # 设置颜色
plt.pie(list_value, labels=list_key, autopct='%1.2f%%',
        colors=colors, shadow=True, startangle=150)
# autopct='%1.2f%%' 保留2位小数
# shadow=True,startangle=150 设置阴影,角度为150度
plt.legend()  # 显示图例
plt.axis('equal')  # 为了让显示的饼图保持圆形,需要添加axis保证长宽一样
plt.title('不同类型的一卡通交易数占比的饼图')  # 添加标题
plt.show()

输出:

在这里插入图片描述

7.任务五

代码如下:


# 5.分别构造线路类、司机类和车辆类,将线路编号1101–1120的线路及其所对应的司机和
#   车辆信息输出为20个txt文档,并保存到一个文件夹中;
list_line=[]
for i in range(1101,1121):  # 将20条线路的名称存进列表里
    list_line.append(i)
class Driver:      # 构造司机类
    def __init__(self,driver):
        self.driver = driver
class Bus:         # 构造公交类
    def __init__(self,bus):
        self.bus = bus
class Line:        # 构造线路类
    def __init__(self):  # 因为要根据线路得知司机和公交的信息,因此在线路类
        self.driver=[]   # 里添加两个列表分别存入司机和公交的信息
        self.bus=[]
    def add_driver(self,x):
        self.driver.append(x)
    def add_bus(self,y):
        self.bus.append(y)

line_class=[]  # 列表存20条线路对应的对象
for i in range(1101,1121):
    l=Line()  # 一条线路创建一个对象
    for j in range(200000):
        if ICdata['线路号'][j]==i:  # 将对应线路的司机和公交信息存入该线路对象内
            l.add_driver(ICdata['车辆编号'][j])
            l.add_bus(int(ICdata['驾驶员编号'][j]))
    line_class.append(l)
basepath='D:/人工智能编程语言/task4/road_line/Line'  # 确定txt文件存入的路径
for i in range(20):
    full_path=basepath+str(list_line[i])+'.txt'  # 加上文件名和后缀
    file=open(full_path,'w',encoding='UTF-8')  # 创建txt文件,只写
    file.write('车辆编号')
    file.write('  ')
    file.write('驾驶员编号\n')
    for j in range(len(line_class[i].driver)):  # 将对应线路的信息写入txt文件内
        file.write(str(line_class[i].driver[j]))
        file.write('     ')
        file.write(str(line_class[i].bus[j]))
        file.write('\n')
    file.close()

输出:

在这里插入图片描述
在这里插入图片描述

8.任务六

代码如下:


# 6.分析搭载乘客情况,确定服务乘客人次最多的10个司机、10条线路和10台车辆。
drivers = Counter(ICdata.iloc[:, 8])  # 取出对应列并统计每个元素出现的次数
a=(drivers.most_common(10))   # 将前十个元素及出现的次数存入列表a内
print('服务人次最多的前十名司机及服务人数:')
for i in range(10):
    print('%-8d'% int(a[i][0]),':','%-10d'% a[i][1])
lines = Counter(ICdata.iloc[:, 4])
b=(lines.most_common(10))
print('服务人次最多的前十条线路及服务人数:')
for i in range(10):
    print('%-8d'% int(b[i][0]),':','%-10d'% b[i][1])
buses = Counter(ICdata.iloc[:, 5])
c=(buses.most_common(10))
print('服务人次最多的前十辆公交及服务人数:')
for i in range(10):
    print('%-8d'% int(c[i][0]),':','%-10d'% c[i][1])

输出:

在这里插入图片描述
在这里插入图片描述

四、总结

加深了对numpy,pandas和matplotlib等第三方应用库的使用。

到此这篇关于Python数据分析之公交IC卡的文章就介绍到这了,更多相关python公交IC卡内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python数据分析之公交IC卡刷卡分析

本文链接: https://www.lsjlt.com/news/124400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python数据分析之公交IC卡刷卡分析
    目录一、背景二、任务要求三、使用步骤四、总结一、背景 交通大数据是由交通运行管理直接产生的数据(包括各类道路交通、公共交通、对外交通的刷卡、线圈、卡口、GPS、视频、图片等数据)、交...
    99+
    2022-11-12
  • python数据分析 - 卡方检验
    卡方检验 1.卡方检验2.独立性卡方检验与一致性卡方检验2.1 独立性卡方检验2.1.1 python独立性卡方检验 2.2 一致性卡方检验 3.正态分布卡方检验3.1 python...
    99+
    2023-09-12
    数据分析 假设检验 卡方检验
  • python数据分析之聚类分析(cluster analysis)
    何为聚类分析 聚类分析或聚类是对一组对象进行分组的任务,使得同一组(称为聚类)中的对象(在某种意义上)与其他组(聚类)中的对象更相似(在某种意义上)。它是探索性数据挖掘的主要任务,也...
    99+
    2022-11-12
  • Python数据分析之分析千万级淘宝数据
    目录1、项目背景与分析说明2、导入相关库3、数据预览、数据预处理4、模型构建1)流量指标的处理2)用户行为指标3)漏斗分析4)客户价值分析(RFM分析)1、项目背景与分析说明 1)项...
    99+
    2022-11-13
  • python数据分析之时间序列分析详情
    目录前言时间序列的相关检验白噪声检验平稳性检验自相关和偏相关分析移动平均算法简单移动平均法简单指数平滑法霍尔特(Holt)线性趋势法Holt-Winters季节性预测模型ARIMA模...
    99+
    2022-11-11
  • python 数据分析之 HTML文件解析
    python 数据分析之 HTML文件解析 一 :Html1. Html 理解2. Html 介绍3. Html 构成4. HTML结构 介绍1> HTML文件结构A: 文档类型声明B: 根标...
    99+
    2023-09-02
    html python 数据分析
  • python数据分析之pandas数据选
      Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用。本文主要介绍Pandas的几种数据选取的方法。   Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据...
    99+
    2023-01-30
    数据 python pandas
  • Python数据分析库之pandas,你
    写这个系列背后的故事 咦,面试系列的把基础部分都写完啦,哈哈答,接下来要弄啥嘞~ pandas吧 外国人开发的 翻译成汉语叫 熊猫 厉害厉害,很接地气 一个基于numpy的库 干啥的? 做数据分析用的 而数据分析是python体系下一个...
    99+
    2023-01-31
    数据 Python pandas
  • Python数据分析之pandas读取数据
    一、三种数据文件的读取 二、csv、tsv、txt 文件读取 1)CSV文件读取: 语法格式:pandas.read_csv(文件路径) CSV文件内容如下: import pandas as pd file...
    99+
    2022-06-02
    python pandas读取数据 pandas数据读取
  • python数据分析之产品销量时序分析与商品关联分析
    这是我们之前的课后作业,根据自己的想法对这个数据进行分析,只要求写出五个点出来就可以了,因此我就对这些数据进行了分析一番。涉及的python知识点还是挺多的,包括了python连接数据库,SQL提取数...
    99+
    2023-09-13
    数据分析 大数据 mysql python 数据库
  • Python数据分析之绘制m1-m2数据
    目录前言m0-m1-m2 数据获取ppi-cpi 图形绘制总结前言 前文讲述了ppi-cpi的图形绘制,在本文中继续分享另外一个与经济息息相关的货币数据指标M0-M1-M2,在这里还...
    99+
    2022-11-12
  • Python数据分析之Matplotlib数据可视化
    目录1.前言2.Matplotlib概念3.Matplotlib.pyplot基本使用3.数据展示3.1如何选择展示方式3.2绘制折线图3.3绘制柱状图3.3.1普通柱状图3.3.2...
    99+
    2022-11-11
  • Python数据分析之pandas函数详解
    目录一、apply和applymap二、排序三、处理缺失数据一、apply和applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df...
    99+
    2022-11-12
  • Python数据分析之绘图和可视化的示例分析
    小编给大家分享一下Python数据分析之绘图和可视化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言matplotlib是一个用于创建出版质量图表...
    99+
    2023-06-15
  • Pandas数据分析之pandas数据透视表和交叉表
    目录前言整理透视 pivot 聚合透视 Pivot Table 聚合透视高级操作交叉表crosstab()数据融合melt()数据堆叠 stack前言 panda...
    99+
    2022-11-11
  • Python数据分析之PMI数据图形展示
    目录前言PMI 数据获取pmi 图形绘制总结前言 前文讲述了ppi-cpi和m0-m1-m2的图形绘制,在本文中继续分享一个反映经济活动景气度的指标PMI,在本文中还是采用爬虫的方式...
    99+
    2022-11-10
  • Python数据分析之彩票的历史数据
    目录一、需求介绍二、数据分析2.1 获取一天的数据2.2 开始一天的数据的分析2.3 循环日期进行多天的数据分析:2.4 将数据写入Excel表格中三、完整代码四、运行结果...
    99+
    2022-11-12
  • Python数据分析之pandas比较操作
    目录一、比较运算符和比较方法二、两个DataFrame比较三、两个Series比较四、与数字或字符串比较五、与array进行比较一、比较运算符和比较方法 比较运算符用于判断是否相等和比较大小,Python中的比较运算...
    99+
    2022-06-02
    Python pandas比较操作 python pandas比较运算符
  • python数据分析之DataFrame内存优化
    目录1. pandas查看数据占用大小2. 对数据进行压缩3. 参考资料💃今天看案例的时候看见了一个关于pandas数据的内存压缩功能,特地来记录一下。 🎒先说明一下情况,pandas...
    99+
    2022-06-02
    python DataFrame内存优化 python DataFrame优化
  • Python数据分析之 Matplotlib 3D图详情
    最初我们介绍到 Matplotlib 可以绘制2D图形,并且介绍了一些常见图形的绘制方法,其实不仅可以绘制2D图形,现在较新版本的 Matplotlib 加入了3D绘图的工具包,已经...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作