Skip to main content
 首页 » 编程设计

python之使用 pandas之n gram 数据挖掘的数据中出现次数最多的字符串

2025年05月04日47TianFang

我在 csv 文件的单列中有以下形式的数据。

['hhcb', 'hcbc', 'cbcc', 'bccc', 'cccd', 'ccdd', 'cddh'] 
['fahb', 'ahba', 'hbac', 'bacc'] 
['hchc', 'chcb', 'hcbh'] 
['hhhh', 'hhhh', 'hhhc', 'hhcd', 'hcdc', 'cdcc'] 
['habb', 'abbb', 'bbbb', 'bbbc', 'bbcc', 'bccd', 'ccdh', 'cdhd'] 

我必须在此数据中找到出现次数最多的四长度字符串。 请建议方法。 (是例子,原始数据很大)

请您参考如下方法:

你可以试试apply Series 用于创建 DataFrame,然后是 stack和 value_counts .最后一个可能的过滤器最高值是 head或 [:5]:

print df 
                                                  a 
0        [hhcb, hcbc, cbcc, bccc, cccd, ccdd, cddh] 
1                          [fahb, ahba, hbac, bacc] 
2                                [hchc, chcb, hcbh] 
3              [hhhh, hhhh, hhhc, hhcd, hcdc, cdcc] 
4  [habb, abbb, bbbb, bbbc, bbcc, bccd, ccdh, cdhd] 
 
print df.a.apply(pd.Series).stack().value_counts()[:1] 
hhhh    2 
dtype: int64 

编辑:

如果您需要前 5 并在每行中删除重复项,请使用 drop_duplicates :

print df 
                                                  a 
0        [hhcb, hhcb, cbcc, bccc, bbbb, hhcb, hhcb] 
1                          [fahb, ahba, hhcd, fahb] 
2                                [hcbh, hhcd, hcbh] 
3              [hhhh, hhhh, hhhc, hhcd, hhcb, bbbb] 
4  [habb, habb, bbbb, bbbc, cbcc, bccd, ccdh, cdhd] 
 
df1 = df.a.apply(pd.Series) 
          .stack() 
          .groupby(level=0) 
          .apply(lambda x: x.drop_duplicates()) 
          .value_counts()[:5] 
 
print df1 
bbbb    3 
hhcd    3 
hhcb    2 
cbcc    2 
habb    1 
dtype: int64