按日期合并推文,返回情绪得分计数
merging tweets by date, returning count of sentiment score
我正在处理情绪分析问题。我的数据框如下
tweet sentiment_score timestamp ticker
0 abc 3 2018-09-19 $AMD
1 def 1 2018-10-19 $AMD
2 wtf 2 2018-07-12 $PH
3 pqr 2 2018-07-12 $PH
4 lmn 3 2018-08-23 $FB
5 jqr 3 2018-08-23 $FB
6 okm 1 2018-08-24 $FB
我要
(1)聚合(合并)每天 "ticker" 的推文。所以我可以 运行 进行情绪分析,并在给定的一天获得每个代码的整体情绪得分。
(2)"sentiment_score" 的值为 {0,1,2,3,4},我想创建 5 个新列,其中包含 no.of 条推文的计数,其中 sentiment_score 是 {0,1,2,3,4} 每 "ticker" 在一天级别。
预期输出
tweet timestamp ticker setiment_1 sentiment_2 sentiment_3
0 abc,def 2018-09-19 $AMD 1 0 1
2 wtf,pqr 2018-07-12 $PH 0 2 0
4 lmn,jqr 2018-08-23 $FB 0 0 2
6 okm 2018-08-24 $FB 1 0 0
我尝试了单独的 groupby 操作,但它们没有提供所需的输出。感谢帮助。
您可以使用 pandas.pivot_table(...)
:
df["_dummy"]=1
df2=df.pivot_table(index=["timestamp", "ticker"], columns="sentiment_score", values="_dummy", aggfunc="sum").fillna(0)
输出:
sentiment_score 2 3
timestamp ticker
2018-07-12 $AVGO 1.0 0.0
2018-07-19 $PH 1.0 0.0
2018-08-23 $FB 0.0 1.0
2018-09-19 $AMD 0.0 1.0
2018-10-09 $CAT 0.0 1.0
文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html
编辑
如果你还想合并推文,你可以在上面的基础上做:
df3=df.pivot_table(index=["timestamp", "ticker"], columns="sentiment_score", values="stocktwit_tweet", aggfunc="sum")
#and to merge it together with previous df:
res=pd.concat([df2, df3], axis=1)
#axis=1 - merge df-s horizontally, axis=0 - merge vertically
我正在处理情绪分析问题。我的数据框如下
tweet sentiment_score timestamp ticker
0 abc 3 2018-09-19 $AMD
1 def 1 2018-10-19 $AMD
2 wtf 2 2018-07-12 $PH
3 pqr 2 2018-07-12 $PH
4 lmn 3 2018-08-23 $FB
5 jqr 3 2018-08-23 $FB
6 okm 1 2018-08-24 $FB
我要
(1)聚合(合并)每天 "ticker" 的推文。所以我可以 运行 进行情绪分析,并在给定的一天获得每个代码的整体情绪得分。
(2)"sentiment_score" 的值为 {0,1,2,3,4},我想创建 5 个新列,其中包含 no.of 条推文的计数,其中 sentiment_score 是 {0,1,2,3,4} 每 "ticker" 在一天级别。
预期输出
tweet timestamp ticker setiment_1 sentiment_2 sentiment_3
0 abc,def 2018-09-19 $AMD 1 0 1
2 wtf,pqr 2018-07-12 $PH 0 2 0
4 lmn,jqr 2018-08-23 $FB 0 0 2
6 okm 2018-08-24 $FB 1 0 0
我尝试了单独的 groupby 操作,但它们没有提供所需的输出。感谢帮助。
您可以使用 pandas.pivot_table(...)
:
df["_dummy"]=1
df2=df.pivot_table(index=["timestamp", "ticker"], columns="sentiment_score", values="_dummy", aggfunc="sum").fillna(0)
输出:
sentiment_score 2 3
timestamp ticker
2018-07-12 $AVGO 1.0 0.0
2018-07-19 $PH 1.0 0.0
2018-08-23 $FB 0.0 1.0
2018-09-19 $AMD 0.0 1.0
2018-10-09 $CAT 0.0 1.0
文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html
编辑
如果你还想合并推文,你可以在上面的基础上做:
df3=df.pivot_table(index=["timestamp", "ticker"], columns="sentiment_score", values="stocktwit_tweet", aggfunc="sum")
#and to merge it together with previous df:
res=pd.concat([df2, df3], axis=1)
#axis=1 - merge df-s horizontally, axis=0 - merge vertically