Pandas使用(六)--数据的分组与聚合

Pandas使用(六)--数据的分组与聚合

  • 基于dataframe对数据进行分组
    • 分组应用
  • 基于dataframe对时序数据进行聚合

基于dataframe对数据进行分组

# 加载package
import pandas as pd

# 基于某列-(‘列名)进行分组
groupdata = df.groupby('列名')
for item,group in groupdata:
	# item是指列名中的一个元素
	df_test = group

分组应用

在交通领域,一个比较经典的可视化是轨迹时空图(time space diagram,简称ts图)。车辆轨迹蕴含丰富的交通信息,不仅可以体现车辆在路网上的起讫点和行驶路径,而且可以反映车辆瞬时速度随时间和空间的变化过程,能够非常直观地表达交通状态运行情况。
画图所需数据列为:车辆编号veh_id,时间sj,距离基准点距离distance。(通常我们获取的轨迹信息直接数据源为:车辆id,时间戳信息,经纬度信息;每3-10s更新一个位置点,市场上的网约车平台应该是3-6s,出租车在10s左右;对源数据的处理主要是将时间戳信息转化为yy-mm-dd hh-mm-ss个格式,将经纬度信息转化为距离信息。)

import matplotlib.pyplot as plt

groupdata = trajs.groupby('veh_id')
for id,group in groupdata:
	trajsdata = group
	trajsdata = trajsdata.sort_values('sj',ascending=True)
	plt.plot(trajsdata['sj'], trajsdata['distance'], '--', color='blue')
plt.show()

基于dataframe对时序数据进行聚合

注⚠️:在对时序数据数据的聚合时,首先需要将表示时间的列转换为时间格式,并设为索引

可以选取聚合的频次,5min、30min、1h等

# 将时间列df['ft']转化为
import pandas as pd

df['ft'] = pd.to_datetime(df['ft'])
df = df.set_index('ft')

# 聚合用到的函数是resample()函数,聚合后求均值是mean()、求和是sum()
df_jh = df[['列x']].resample('1h').mean() # mean后面一定要加括号啊,这里常常犯错

你可能感兴趣的:(数据分析,python,大数据,数据分析)