python - 在 python 中可视化推文长度

标签 python matplotlib seaborn

让我们进行必要的导入:

import seaborn as sns
import pandas as pd 
import matplotlib.pyplot as plt

然后让我们生成数千个随机长度(0 到 101)字符串的列表以用作示例推文。

from random import choice, randrange
from string import ascii_lowercase, digits

chars = ascii_lowercase + digits
lst = [''.join(choice(chars) for _ in range(randrange(0, 101, 1))) for _ in range(1000)]

让我们创建计数图来可视化推文长度的频率:

tweet_lengths = list(map(len, lst))
sns.countplot(tweet_lengths)
plt.title('Tweet lengths')
plt.xlabel('Tweet lengths')
plt.ylabel('# of tweets')

输出:
enter image description here

所以这不遵循正态分布,显然是因为它是随机生成的。令人惊讶的是,在经过一些预处理(删除 URL、提及等)的实际推文中,它不是正态分布。 (附带问题:为什么会这样?它不应该是正常的吗?或者随机大小的网址,而我的预处理破坏了正态分布?)

实际上,最初我尝试想象这样的事情:

df_tweets_lengths = pd.DataFrame(tweet_lengths)

fig, ax = plt.subplots()
# df_1000.text.str.lenvalue_counts().plot(ax=ax, kind='bar')
df_tweets_lengths.plot(ax=ax, kind='bar')

输出:

enter image description here

但是,我无法解释上图想表达的意思?它只是简单地绘制所有数千条推文中每条推文的长度吗?如果是,那么为什么会有这些带(四个空格,没有蓝色条)?

最佳答案

您遇到了两个问题,一个是概念性的,一个是程序性的。

  1. randrange 生成均匀分布,而不是正态分布。这意味着您应该期望输出条具有相似的高度。

  2. countplothistplot 的分类版本,这意味着它将绘制所有值的计数,即,如果您有一个包含 [1, 1, 1, 2, 2, 3] 它将绘制三个条形,{1:3, 2:2, 3:1}

您实际上没有看到样本中的均匀分布的原因是您的 x 值范围很大(101 个值),但您的样本很小(1000)。如果将样本数量增加到 1,000,000,您会使用 countplot 看到均匀的形状。

import seaborn as sns
import pandas as pd 
import matplotlib.pyplot as plt
from string import ascii_lowercase, digits
from random import choice, randrange

chars = ascii_lowercase + digits
lst = [''.join(choice(chars) for _ in range(randrange(0, 101, 1))) for _ in range(1000000)]

tweet_lengths = list(map(len, lst))
sns.countplot(tweet_lengths)
plt.title('Tweet lengths')
plt.xlabel('Tweet lengths')
plt.ylabel('# of tweets')

enter image description here

关于python - 在 python 中可视化推文长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71983310/

相关文章:

legend - 子图外的 Python3 Seaborn PairGrid 图例

python - 未找到 Seaborn 模块 'histplot'

c# - 为什么不使用 IEnumerable?/与 python 相比,生成器在 c# 中如何工作

python - 如何计算列表中的元素与另一个列表完全匹配的次数 - python

python - 使用实时相机预览更新 matplotlib 中的帧

python - Matplotlib 示例输出与网站显着不同

python - 使用 sns 绘制 JIRA,如创建的 v/s 已解决

python - 在 2 个列表中查找最接近的日期时间

python - 使用 Python 修改 PCAP

python - 识别时间序列何时通过图表和表格中的阈值