关于初步处理,请参考地铁大数据挖掘之客流数据预处理——从原始一卡通数据提取城市地铁客流(一)。


上一篇博客对数据进行了初步处理,得到结果如下图:

”_10min“字段代表所处的时间片(比如1代表0:00-0:10),inputnums代表进站客流,outputnums代表出站客流。

然而,这一结果在使用时存在两个问题:

  1. 我们在计算地铁站时,大部分是只看站点不看线路的。即使是换乘站点,也是几条线路都在一个站点。因此,在"linename"这里存在问题。
  2. 这样的结果看起来不是很方便。如果我们可以分别用两张二维表格表示进站和出站,两个维度分别是站点和时间片,那最后的结果将会好看很多。

因此,这一篇,我们对上一篇的结果进行进一步优化。

1 提取线路

这里下载了上海市地铁线路图。这里看到,基本上所有的交叉站点都是换乘站,只有”六号线浦电路“和”四号线浦电路“并不在同一站点,所以这里分开处理。

def split_station(data):dd6=data[data["linename"]=="6号线浦电路"]data1=data.append(dd6)data1.drop_duplicates(keep=False,inplace=True)dd6["linename"]="6号线6号线浦电路"dd4=data[data["linename"]=="4号线浦电路"]data2=data1.append(dd4)data2.drop_duplicates(keep=False,inplace=True)dd4["linename"]="4号线4号线浦电路"dd6["stationname"]=dd6["linename"].str.split("线").str.get(1)+"线"+dd6["linename"].str.split("线").str.get(2)dd4["stationname"]=dd4["linename"].str.split("线").str.get(1)+"线"+dd4["linename"].str.split("线").str.get(2)data2["stationname"]=data2["linename"].str.split("线").str.get(1)datan=data2.append(dd6)datann=datan.append(dd4)datann.drop(["linename"],axis=1,inplace=True)return datann

2 提取客流

def groupby_data(data):grouped_data=data.groupby(["stationname","_10mins"]).sum()manageG=grouped_data.reset_index(drop=False)return manageG

3 转换为二维表格

这里分别对进站和出站数据运用透视操作,把客流转换为二维表格。

def pivot_inputdata(data):inputdatanums=data.pivot_table(values="inputnums",index="stationname",columns="_10mins")idn=inputdatanums.fillna(0)return idndef pivot_outputdata(data):outputdatanums=data.pivot_table(values="outputnums",index="stationname",columns="_10mins")odn=outputdatanums.fillna(0)return odn

4 整合代码

最后,对代码进行整合操作。

import pandas as pd
import osos.mkdir("inputs")
os.mkdir("outputs")def open_data(data):f=open(data)df=pd.read_csv(f)df.drop(["Unnamed: 0"],axis=1,inplace=True)return dfdef split_station(data):dd6=data[data["linename"]=="6号线浦电路"]data1=data.append(dd6)data1.drop_duplicates(keep=False,inplace=True)dd6["linename"]="6号线6号线浦电路"dd4=data[data["linename"]=="4号线浦电路"]data2=data1.append(dd4)data2.drop_duplicates(keep=False,inplace=True)dd4["linename"]="4号线4号线浦电路"dd6["stationname"]=dd6["linename"].str.split("线").str.get(1)+"线"+dd6["linename"].str.split("线").str.get(2)dd4["stationname"]=dd4["linename"].str.split("线").str.get(1)+"线"+dd4["linename"].str.split("线").str.get(2)data2["stationname"]=data2["linename"].str.split("线").str.get(1)datan=data2.append(dd6)datann=datan.append(dd4)datann.drop(["linename"],axis=1,inplace=True)return datanndef groupby_data(data):grouped_data=data.groupby(["stationname","_10mins"]).sum()manageG=grouped_data.reset_index(drop=False)return manageGdef pivot_inputdata(data):inputdatanums=data.pivot_table(values="inputnums",index="stationname",columns="_10mins")idn=inputdatanums.fillna(0)return idndef pivot_outputdata(data):outputdatanums=data.pivot_table(values="outputnums",index="stationname",columns="_10mins")odn=outputdatanums.fillna(0)return odnfor i in range(1,31):if i<11:filename="2015040"+str(i)+".csv"else:filename="201504"+str(i)+".csv"dealeddata=open_data(filename)split_data=split_station(dealeddata)manageddata=groupby_data(split_data)_inputs=pivot_inputdata(manageddata)_outputs=pivot_outputdata(manageddata)pathin=os.path.join("inputs",filename)pathout=os.path.join("outputs",filename)_inputs.to_csv(pathin)_outputs.to_csv(pathout)

最后看一下结果:

地铁大数据挖掘之数据预处理——从原始一卡通数据提取城市地铁客流(二)相关推荐

  1. 地铁大数据挖掘之数据预处理——从原始一卡通数据提取城市地铁客流(一)

    这是很久以前写的一段代码,很简单很基础.最近突然用到,这里把它分享出来,希望可以为有需要的朋友提供帮助. 以及欢迎阅读这一系列第二篇:地铁大数据挖掘之客流数据预处理--从原始一卡通数据提取城市地铁客流 ...

  2. cnn对网络数据预处理_CNN中的数据预处理和网络构建

    cnn对网络数据预处理 In this article, we will go through the end-to-end pipeline of training convolution neur ...

  3. 3.4 数据预处理(一) - 数据集成(Data Integration)

    简介 数据集成(Data Integration)是一个数据整合的过程.通过综合各数据源,将拥有不同结构.不同属性的数据整合归纳在一起,就是数据集成.由于不同的数据源定义属性时命名规则不同,存入的数据 ...

  4. 数据预处理--对偏态数据

    转载自:https://blog.csdn.net/csdn_lzw/article/details/83387570 及:https://blog.csdn.net/sinat_26917383/a ...

  5. python数据预处理代码_Python中数据预处理(代码)

    本篇文章给大家带来的内容是关于Python中数据预处理(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.1.导入标准库import numpy as np import matp ...

  6. 数据预处理之将类别数据数字化的方法 —— LabelEncoder VS OneHotEncoder

    LabelEncoder 和 OneHotEncoder 是什么 在数据处理过程中,我们有时需要对不连续的数字或者文本进行数字化处理. 在使用 Python 进行数据处理时,用 encoder 来转化 ...

  7. 数据预处理--噪声_为什么数据对您的业务很重要-以及如何处理数据

    数据预处理--噪声 YES! Data is extremely important for your business. 是! 数据对您的业务极为重要. A human body has five ...

  8. python数据预处理 重复行统计_Python数据分析之数据预处理(数据清洗、数据合并、数据重塑、数据转换)学习笔记...

    1. 数据清洗 1.1 空值和缺失值的处理 ​空值一般表示数据未知.不适用或将在以后添加数据.缺失值是指数据集中某个或某些属性的值是不完整的. ​一般空值使用None表示,缺失值使用NaN表示 1.1 ...

  9. matlab主要数据预处理函数,Matlab 神经网数据预处理的函数

    Matlab 神经网数据预处理的函数 poststd 后处理由 PRESTD 预处理的数据 在 R2006a NNET 5.0 中已经过时最后用于 R2005b NNET 4.0.6 句法[p,t]= ...

最新文章

  1. C++ 与 JAVA区别
  2. 四招避免SEO优化过度
  3. showModalDialog跨域访问的解决
  4. 全球及中国微型风扇行业营销前景及发展趋势建议报告2022-2027年
  5. JavaScript高级day02-AM【函数的prototype、显式原型与隐式原型、原型链】
  6. HALCON示例程序autobahn高速公路车道识别程序剖析
  7. Communications link failure,The last packet successfully received from the serve
  8. 读书笔记-《 我的成功可以复制》四
  9. 生信高性能服务器,【玩转腾讯云】使用云服务器进行生信数据分析
  10. 计算机应用能力考试湖南成绩查询,湖南计算机等级考试成绩查询入口
  11. 心理压力测试软件,心理压力测试
  12. linux:挂载、rpm、yum、scp、ssh、crontab、时钟同步
  13. 高德地图各种摄像头图标_高德地图Overlay的应用以及照相功能的实现
  14. 全媒体时代的速度与激情:香港凤凰卫视云端转型实践
  15. 实习日记——Day36
  16. 【JAVA工具类】批量修改文件名称修改成特定名称
  17. 淘宝分布式数据库是如何实现高可用的
  18. c语言设计程序之数组,软考程序员考点C语言程序设计之数组
  19. 沈阳大雨部分地区积水情况
  20. 视图的重命名mysql语句_sql语句重命名字段-视图重命名sql语句-数据库重命名sql语句...

热门文章

  1. 2023CUPT第十四题 射流的折射 思路与解法
  2. 哈理工计算机学院学生会技术部,信息技术学院、软件学院学生会各部门工作职责...
  3. scapy python3_【Python3黑帽子学习笔记 on Mac】第四章 Scapy:网络的掌控者
  4. 32位的ane与air sdk升级
  5. Java培训四个月能学会吗?
  6. Python 算法训练之摩斯电码
  7. delphi bpl插件系统开发
  8. 在ESG领域,区块链究竟怎么用?
  9. 分位数回归(Quantile Regression)代码解析
  10. 98 服务器系统,Windows 98