用Python解析频率分布图的嵌套行文本文档
我有一份结构如下的文件:用Python解析频率分布图的嵌套行文本文档,python,parsing,frequency-distribution,Python,Parsing,Frequency Distribution,我有一份结构如下的文件: CUSTOMERID1 conversation-id-123 conversation-id-123 conversation-id-123 CUSTOMERID2 conversation-id-456 conversation-id-789 我想对文档进行解析,得到一个频率分布图,其中X轴上的对话数量和Y轴上的客户数量。有人知道用Python实现这一点的最简单方法吗 我很熟悉频率分布图,但我正在努力解决如何将数据解析为正确
CUSTOMERID1
conversation-id-123
conversation-id-123
conversation-id-123
CUSTOMERID2
conversation-id-456
conversation-id-789
我想对文档进行解析,得到一个频率分布图,其中X轴上的对话数量和Y轴上的客户数量。有人知道用Python实现这一点的最简单方法吗
我很熟悉频率分布图,但我正在努力解决如何将数据解析为正确的数据结构来构建图。感谢您提前提供的任何帮助 您可以尝试以下操作:
>>> dict_ = {}
>>> with open('file.csv') as f:
for line in f:
if line.startswith('CUSTOMERID'):
dict_[line.strip('\n')] = list_ = []
else:
list_.append(line.strip().split('-'))
>>> df = pd.DataFrame.from_dict(dict_, orient='index').stack()
>>> df.transform(lambda x:x[-1]).groupby(level=0).count().plot(kind='bar')
输出:
如果您只想在
X
axis中使用1
和2
,只需将dict.[line.strip('\n')]=list.[]
这一行更改为dict.[line.strip('CUSTOMERID/\n')]=list.[]
,您有两个独特的客户和三个独特的对话。你不能策划客户与对话。您是希望每个客户有多个对话,还是希望每个对话有多个客户。您能为您给出的示例提供一个您想要的示例输出图吗?CUSTOMERID1是如何进行三次相同的对话的?CUSTOMERID1只是实际ID的一个示例。实际ID不会以“CUSTOMERID.same with the conversation ID”开头。您需要的是这样的内容:customers=[i.strip(),如果不是i.StartWith('---'),则代表行中的i,而conversations=[i.strip())如果i.startswith('---')]创建字典,则在行中输入i。注意:无法为连续空格设置此注释的格式,因此四个破折号应替换为四个空格。