用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。注意:无法为连续空格设置此注释的格式,因此四个破折号应替换为四个空格。