- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试为各种 twitter 句柄
绘制
每日关注者计数
。结果类似于您在下面看到的内容,但可以通过 1 个以上的推特句柄进行过滤:
通常,我会通过简单地将从 Twitter 提取的新数据集附加到原始表来完成此操作,并附上提取日志的日期。然而,这会让我在短短几天内得到一百万行代码。而且我无法清楚地看到用户何时离开。
作为一个替代方案
,在从 Twitter 提取数据后,我构建了我的 pandas dataframe
,如下所示:
Follower_ID Handles Start_Date End_Date
100 x 30/05/2017 NaN
101 x 21/04/2017 29/05/2017
201 y 14/06/2017 NaN
100 y 16/06/2017 28/06/2017
地点:
Handles:
是我为之拉粉丝的账户Follower_ID:
是用户关注一个handle因此,例如,如果我是Follower_ID 100
,我可以同时关注handle x
和handle y
我想知道准备数据的最佳方法是什么(pivot
、通过函数清理
、groupby
),以便它可以相应地绘制。有什么想法吗?
最佳答案
我最终以一种天真的方法使用了 iterrows
,因此可能有一种更有效的方法来利用 pandas reshape 等。但我的想法是制作一个接受数据框的函数和您要绘制的句柄,然后返回另一个数据框,其中包含该句柄的每日关注者数量。为此,函数
date_range
,并且此时,单个列表上的 collections.Counter
是一种按天计算结果的简单方法。
需要注意的是,null End_Date
应该合并到图表上您想要的任何结束日期。当我处理数据时,我将其称为 max_date
。总而言之:
from io import StringIO
from collections import Counter
import pandas as pd
def get_counts(df, handle):
"""Inputs: your dataframe and the handle
you want to plot.
Returns a dataframe of daily follower counts.
"""
# filters the df to the desired handle only
df_handle = df[df['Handles'] == handle]
all_dates = []
for _, row in df_handle.iterrows():
# Take each date range (for example, 21/04/2017 to 29/05/2017),
# turn that into a pandas `date_range`, and
# put all the dates in a single list
all_dates.extend(pd.date_range(row['Start_Date'],
row['End_Date']) \
.tolist())
counts = pd.DataFrame.from_dict(Counter(all_dates), orient='index') \
.rename(columns={0: handle}) \
.sort_index()
return counts
这就是函数。现在阅读和整理您的数据...
data = StringIO("""Follower_ID Handles Start_Date End_Date
100 x 30/05/2017 NaN
101 x 21/04/2017 29/05/2017
201 y 14/06/2017 NaN
100 y 16/06/2017 28/06/2017""")
df = pd.read_csv(data, delim_whitespace=True)
# fill in missing end dates
max_date = pd.Timestamp('2017-06-30')
df['End_Date'].fillna(max_date, inplace=True)
# pandas timestamps (so that we can use pd.date_range)
df['Start_Date'] = pd.to_datetime(df['Start_Date'])
df['End_Date'] = pd.to_datetime(df['End_Date'])
print(get_counts(df, 'y'))
最后一行为句柄 y
打印:
y
2017-06-14 1
2017-06-15 1
2017-06-16 2
2017-06-17 2
2017-06-18 2
2017-06-19 2
2017-06-20 2
2017-06-21 2
2017-06-22 2
2017-06-23 2
2017-06-24 2
2017-06-25 2
2017-06-26 2
2017-06-27 2
2017-06-28 2
2017-06-29 1
2017-06-30 1
您可以使用您喜欢的包绘制此数据框。
关于python - 使用 Start_Date 和 End_Date 绘制 Pandas Dataframe 的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847470/
我想从数据库中返回从 end_date 到 end_date 15 天前的记录! 我最近三天一直在搜索查询! 然而。我需要你帮忙做一个查询。很简单,但我不知道该怎么做。 我写了这样的查询: SELEC
我有一个表,其中任务分配给具有开始日期和结束日期的用户。我想做的是检查用户是否可以完成分配给他的任务,这意味着检查他们是否在给定日期之间分配给了他任何任务。如果是则限制用户添加记录。 例如,如果为用户
我的 php 页面上有以下代码来显示从今天开始的 mysql 数据库中的事件: SELECT * FROM events WHERE DATE_FORMAT(sort_date, '%Y-%m-%d'
这个问题已经有答案了: Validate that end date is greater than start date with jQuery (16 个回答) 已关闭 6 年前。 我有一个包含两
这个问题已经有答案了: How do I query between two dates using MySQL? (12 个回答) 已关闭 8 年前。 我的 table 是这样的 |id|start
我有表名利率,字段开始日期和结束日期。它们是我的数据库表利率中的两条记录,例如 高级编号开始日期结束日期 1 2014-04-26 2014-05-03 2 2014-04-27 2014-05-04
我有一个包含任务的表,每个任务都有一个 date_start 和 date_finish 字段。 我需要构造一个查询,该查询将接受传入的日期,如果传入的日期介于 date_start 和 date_f
我有一个包含开始日期和结束日期的假期记录 我想查询日期为“2015-05-05”和“2015-06-05”我想查看哪些假期记录落在这些日期之间并可以叠加,例如一个假期记录开始日期可能为“2015-06
我有一个记录了开始和结束时间的事件表。我想查找在特定日期发生的所有事件。有些事件一年前就开始了,有些事件会持续更久。 例如,我希望能够选择 2010 年 5 月 20 日并找到该日期发生的所有事件。
我有事件表,我需要在几天之间选择记录。我的陈述看起来像 Select Event_ID ,Event_Type ,Event_Time From Event_Table
Error Message table 嗨 当我尝试使用此触发器计算结束日期时,我收到此消息。持续时间 Integer 来自另一个表。这是在 Mamp 环境中的 MySQL 中完成的 感谢任何帮助 使
我的模型中有一个 start_date 和 end_date 字段,我想在 end_date 大于 start_date 时将错误分配给它,我一直在查看文档,但找不到相关示例。 最佳答案 您的表单中需
我想将 2 个给定日期之间的天数拆分为特定的批次大小,以使我的 api 调用变得容易。 我目前正在使用它来每月拆分它。但是,需要根据用户输入的批大小进一步拆分它并获取开始和结束日期。 例如: star
我的 MySQL 数据库中列出了事件。 事件有 start_date(日期)和 end_date(日期)字段。 在我的应用程序中,用户可以使用日历单击特定日期。因此,如果他们点击今天,他们将被带到/e
我正在构建新闻网站。 我试图只打印正确的 end_date 内的新闻,但有些我无法让它工作 $sql2 = "SELECT * FROM p_news WHERE CURDATE() < end_da
我有一个如下的数据框(缓慢改变维度)。我想用键列标识的特定组的下一行 start_dt 填充 end_dt 列。 Key start_dt end_dt 1 25-05-2019 NA 1
在 SQL 中,有分隔列“年”和“月”,现在基于 jquery 日期时间选择器。我可以从表单中获取格式为 yyyymm 的日期条目,例如 201012。 问题是如何根据django form的日期输入
我正在尝试为各种 twitter 句柄 绘制 每日关注者计数。结果类似于您在下面看到的内容,但可以通过 1 个以上的推特句柄进行过滤: 通常,我会通过简单地将从 Twitter 提取的新数据集附加到原
帮我修改我的代码。这是我的 sql 代码: SELECT lt.loan_amount, lt.rel_date, lt.due_date, DATEDIFF( lt.rel_date
我在数据库中有一个下表。 id | list_id |venue_id |name | start_date | end_date |start_time | end_time 1
我是一名优秀的程序员,十分优秀!