如何聚合文本文件的出现,然后绘制它 Python
How to aggregate the occurence of text file and then graph it Python
我有一个列表
top = ['GME', 'MVIS', 'TSLA', 'AMC']
我有一个数据集
discussion = pd.read_csv('discussion_thread_data.csv')
dt | text
2021-03-19 20:59:49+06 | I only need GME to hit 20 eod to make up
2021-03-19 20:59:51+06 | lads why is my account covered in more red
2021-05-21 15:54:27+06 | Oh my god, we might have 2 green days in a row
2021-05-21 15:56:06+06 | Why are people so hype about a 4% TSLA move
所以我想将数据框分成单独的数据框,其中每个数据框都包含文本列列表中每个代码的出现。
这是我试过的
check = discussion[discussion['text'].map(lambda txt: any(tag in txt for tag in top))]
我得到了正确的输出,现在我想用列表中的特定代码绘制每一次出现的行
我希望我的 x 轴是日期,y 轴是股票代码。换句话说,我想要 4 个单独的图表,每个图表都是单独的自动收报机。
感谢任何帮助
对所有匹配值使用 Series.str.extractall
,对单词边界使用 \b\b
:
top = ['GME', 'MVIS', 'TSLA', 'AMC']
pat = '|'.join(r"\b{}\b".format(x) for x in top)
df = discussion.set_index('dt')['text'].str.extractall('('+pat+')')[0].reset_index(name='v')
print (df)
dt match v
0 2021-03-19 20:59:49+06 0 GME
1 2021-05-21 15:56:06+06 0 TSLA
计数使用 crosstab
:
df1 = pd.crosstab(df['dt'], df['v'])
print (df1)
val GME TSLA
dt
2021-03-19 20:59:49+06 1 0
2021-05-21 15:56:06+06 0 1
DataFrame.plot
的最后阴谋:
df1.plot()
编辑 解决方案:
import matplotlib.pyplot as plt
for col in df1.columns:
df1[col].plot()
plt.show()
我有一个列表
top = ['GME', 'MVIS', 'TSLA', 'AMC']
我有一个数据集
discussion = pd.read_csv('discussion_thread_data.csv')
dt | text
2021-03-19 20:59:49+06 | I only need GME to hit 20 eod to make up
2021-03-19 20:59:51+06 | lads why is my account covered in more red
2021-05-21 15:54:27+06 | Oh my god, we might have 2 green days in a row
2021-05-21 15:56:06+06 | Why are people so hype about a 4% TSLA move
所以我想将数据框分成单独的数据框,其中每个数据框都包含文本列列表中每个代码的出现。 这是我试过的
check = discussion[discussion['text'].map(lambda txt: any(tag in txt for tag in top))]
我得到了正确的输出,现在我想用列表中的特定代码绘制每一次出现的行 我希望我的 x 轴是日期,y 轴是股票代码。换句话说,我想要 4 个单独的图表,每个图表都是单独的自动收报机。
感谢任何帮助
对所有匹配值使用 Series.str.extractall
,对单词边界使用 \b\b
:
top = ['GME', 'MVIS', 'TSLA', 'AMC']
pat = '|'.join(r"\b{}\b".format(x) for x in top)
df = discussion.set_index('dt')['text'].str.extractall('('+pat+')')[0].reset_index(name='v')
print (df)
dt match v
0 2021-03-19 20:59:49+06 0 GME
1 2021-05-21 15:56:06+06 0 TSLA
计数使用 crosstab
:
df1 = pd.crosstab(df['dt'], df['v'])
print (df1)
val GME TSLA
dt
2021-03-19 20:59:49+06 1 0
2021-05-21 15:56:06+06 0 1
DataFrame.plot
的最后阴谋:
df1.plot()
编辑
import matplotlib.pyplot as plt
for col in df1.columns:
df1[col].plot()
plt.show()