gpt4 book ai didi

python - 用Python绘制时间频率

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:01 26 4
gpt4 key购买 nike

我的 csv 文件中有 180,000 行,第三列(时间)如下所示 2016-10-20 03:43:11+00:00 (时间采用 UTC)。那么,我如何在 Python 中绘制一个图表,以显示整个 csv 文件中 2 小时时间范围的每 5 分钟间隔内发生了多少条这样的行(推文)?例如,我有兴趣知道每 5 分钟间隔内发生了多少条推文。

CSV 文件中的一些示例行如下所示:

Candidate,ID,Time,Username,Tweet
Clinton,788948653016842240,2016-10-20 03:43:11+00:00,Tamayo_castle,Lorem ipsum dolor sit amet, consectetur adipiscing elit
Clinton,788948666501464064,2016-10-20 03:43:14+00:00,ThinkCenter1968,Maecenas congue, sem nec suscipit aliquam, lorem enim pl
Clinton,788948673594097664,2016-10-20 03:43:16+00:00,21stCenRevolt,Curabitur nec condimentum lorem. Aliquam a dolor porta
Both,788948662881751040,2016-10-20 03:43:13+00:00,mikeywan,Ut eu sagittis metus. Phasellus ut vulputate dui, nec malesuada
Both,788948675313696769,2016-10-20 03:43:16+00:00,erwoti,Fusce sit amet aliquet ipsum, quis placerat elit.
Clinton,788948671756955650,2016-10-20 03:43:15+00:00,isaac_urner,te nisi, vitae bibendum odio. Maecenas hen

基本上,我不知道如何将下面的 pd.date_range 链接到 tweets_df,以便它可以显示两小时内以 5 分钟为间隔的推文频率(例如以直方图格式或任何其他代表性图)。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

tweets_df = pd.read_csv('valid_tweets.csv')
print(tweets_df)
pd.date_range('10/20/2016 1:55', '10/20/2016 3:55',
freq='5 min', tz='UTC')

最佳答案

所以我会用 pandas >= 0.19 来做到这一点:

import pandas
import matplotlib.pyplot as plt

FIVEMIN = pandas.offsets.Minute(5)

fig, ax = plt.subplots(figsize=(6, 3.5))

ax = (
pandas.read_csv('data.csv', parse_dates=['Time'])
.resample(FIVEMIN, on='Time')['ID']
.count()
.plot.line(ax=ax)
)
plt.show()

如果您没有使用 pandas 0.19 或更高版本,则需要显式设置索引:

ax = (
pandas.read_csv('data.csv', parse_dates=['Time'])
.set_index('Time')
.resample(FIVEMIN)['ID']
.count()
.plot.line(ax=ax)
)

关于python - 用Python绘制时间频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48362976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com