为列表列表中的每个列表创建单独的 Counter() 对象和 Pandas DataFrame

2024-01-05

我能找到的所有其他答案都专门提到了在列表列表中聚合所有嵌套列表,而我希望为每个列表单独聚合。

我目前有一个列表列表:

master_list = [[a,a,b,b,b,c,c,c], [d,d,d,a,a,a,c,c,c], [c,c,c,a,a,f,f,f]]

我想通过循环为每个列表返回一个字典或 Counter() 对象:

counter1 = {'a': 2, 'b': 3, 'c': 3}
counter2 = {'d': 3, 'a': 3, 'c': 3}
counter3 = {'c': 3, 'a': 2, 'f': 3}

目前,我正在使用循环返回看起来像这样的东西 - 这并不完全是我想要的,因为它全部集中在一起,并且我在单独访问计数器对象时遇到了麻烦:

Input:

count = Counter()
for lists in master_list:
    for words in lists:
    count[words] += 1


Output:

Counter({'a': 2, 'b': 3, 'c': 3})
Counter({'d': 3, 'a': 3, 'c': 3})
Counter({'c': 3, 'a': 2, 'f': 3})

上面的问题是,我似乎无法找到一种方法来单独获取每个计数器,因为我试图为每个字典/计数器对象创建一个 pandas 数据帧。我试图以编程方式执行此操作,因为我的“master_list”中有数百个列表,并且我想返回一个数据帧,该数据帧显示每个单独列表的元素频率。最后,我将为“主列表”中的每个列表都有一个单独的数据框和计数器对象

目前我有一些只返回 1 个数据帧的东西:

Input:

table = pandas.DataFrame(count.items())
table.columns = ['Word', 'Frequency']
table.sort_values(by=['Frequency'], ascending = [False])


Output:

Word   Frequency
the    542
and    125
or     45
.      .
.      .
.      .
.      .

任何见解将不胜感激 - 另外,任何有关单独处理 Counter() 对象的提示也将不胜感激。


IMO,这个问题可以展示真正的熊猫的力量。让我们做以下事情——而不是计数无聊[a,a,b,b,b,c,c,c], [d,d,d,a,a,a,c,c,c], [c,c,c,a,a,f,f,f]我们将计算真实书籍中单词的频率。我选了以下三部:《浮士德》、《哈姆雷特》、《麦克白》。

Code:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from collections import defaultdict
import string
import requests
import pandas as pd

books = {
  'Faust': 'http://www.gutenberg.org/cache/epub/2229/pg2229.txt',
  'Hamlet': 'http://www.gutenberg.org/cache/epub/2265/pg2265.txt',
  'Macbeth': 'http://www.gutenberg.org/cache/epub/2264/pg2264.txt',
}

# prepare translate table, which will remove all punctuations and digits
chars2remove = list(string.punctuation + string.digits)
transl_tab = str.maketrans(dict(zip(chars2remove, list(' ' * len(chars2remove)))))
# replace 'carriage return' and 'new line' characters with spaces
transl_tab[10] = ' '
transl_tab[13] = ' '


def tokenize(s):
    return s.translate(transl_tab).lower().split()

def get_data(url):
    r = requests.get(url)
    if r.status_code == requests.codes.ok:
        return r.text
    else:
        r.raise_for_status()

# generate DF containing words from books
d = defaultdict(list)
for name, url in books.items():
    d[name] = tokenize(get_data(url))

df = pd.concat([pd.DataFrame({'book': name, 'word': tokenize(get_data(url))})
                for name, url in books.items()], ignore_index=True)

# let's count the frequency
frequency = df.groupby(['book','word']) \
              .size() \
              .sort_values(ascending=False)

# output
print(frequency.head(30))
print('[Macbeth]: macbeth\t', frequency.loc['Macbeth', 'macbeth'])
print('[Hamlet]: nay\t', frequency.loc['Hamlet', 'nay'])
print('[Faust]: faust\t', frequency.loc['Faust', 'faust'])

Output:

book     word
Hamlet   the      1105
         and       919
Faust    und       918
Hamlet   to        760
Macbeth  the       759
Hamlet   of        698
Faust    ich       691
         die       668
         der       610
Macbeth  and       602
Hamlet   you       588
         i         560
         a         542
         my        506
Macbeth  to        460
Hamlet   it        439
Macbeth  of        426
Faust    nicht     426
Hamlet   in        409
Faust    das       403
         ein       399
         zu        380
Hamlet   that      379
Faust    in        365
         ist       363
Hamlet   is        346
Macbeth  i         344
Hamlet   ham       337
         this      328
         not       316
dtype: int64

[Macbeth]: macbeth      67
[Hamlet]: nay    27
[Faust]: faust   272
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为列表列表中的每个列表创建单独的 Counter() 对象和 Pandas DataFrame 的相关文章

随机推荐

  • 为什么 std::cin 不能隐式转换为 bool?

    In C 入门第五版 第 14 章讨论转换运算符 在该标准的早期版本中 想要定义到 bool 的转换的类面临一个问题 因为 bool 是算术类型 所以转换为 bool 的类类型对象可以在任何需要算术类型的上下文中使用 这种转变可能会以令人惊
  • popen() 替代方案

    我的问题是这个问题的延伸 popen 创建一个额外的 sh 进程 https stackoverflow com questions 6742635 popen creates an extra sh process Motives 1 我
  • 如何在 C# 中打开程序集绑定日志记录?

    我遇到了这个错误 无法弄清楚缺少什么 Could not load file or assembly xxxxx Version 1 0 0 42 Culture neutral PublicKeyToken c5067b3d1110b13
  • 设置 ComboBox 所选项目突出显示颜色

    我需要更改弹出列表中组合框所选项目的突出显示颜色 我找到了几个解释如何执行此操作的教程 但它们都使用 Blend 我没有也无法获取 或者涉及更改系统默认颜色 这对我来说似乎是一种黑客行为 有人可以指出我需要覆盖的模板 或者告诉我需要设置的属
  • 如何在 Makefile 中获取脚本源?

    有没有更好的方法从 makefile 中获取设置环境变量的脚本 FLAG 0 ifeq FLAG 0 export FLAG 1 bin myshell c
  • 递归取消引用指针

    当我试图在这里回答一个问题时 我发现了这个问题 如何递归取消引用指针 C 03 https stackoverflow com questions 8022821 how to recursively dereference pointer
  • 跨两个表的 SQL SELECT

    我对如何处理这个 SQL 查询有点困惑 我有两个表 记录数相同 我想返回一个列 该列是两者之间的除法 换句话说 这是我的无法正常工作 query SELECT SELECT v FROM Table1 SELECT DotProduct F
  • 升级到 NDK 14 后无法在 C++ 代码中找到声明

    我更新了 Android Studio 2 3 以使用 NDK 14 当您使用代码时 一切都按预期工作 代码编译并且应用程序按预期运行 然而 由于某种原因 当您尝试跳转到任何 C 对象 函数 变量的减速时 您会收到一条消息 工作室 无论代码
  • 如何在服务器发布操作结果后打开新选项卡

    情况是这样的 我有一个保存和一个打印按钮
  • 在php中将数字转换为字符串

    在下面我尝试过 code string code 没有成功 如何在 PHP 中将数字转换为字符串 code 087326487326 strlen strlen code print strlen br for i strlen i gt
  • python列表循环技术语法[重复]

    这个问题在这里已经有答案了 我正在读一本article http www peterbe com plog uniqifiers benchmark关于 python 删除列表中的重复元素 有一个函数定义为 def f8 seq Dave
  • 将 unique_ptr 与成员函数指针一起使用时出错

    我有一堂课如下 class A public A int key m key key int Key const return m key private int m key 我测试使用 unique ptr 和成员函数指针 int A M
  • SwiftUI TabBar:点击当前选定选项卡的 TabItem 来重置视图的操作

    我正在开发的应用程序基于 TabBar 当我在选项卡上时 我希望能够再次单击 tabItem 来重置视图 类似于 Twitter 在其 tabBar 中的做法 但我不知道如何识别该操作 向 TabItem 添加按钮不起作用 添加 ontap
  • MATLAB 图形在插入 LaTeX 时不具有相同的大小(尽管使用相同的代码生成)

    我正在 MATLAB 中生成一些图形 并尝试将它们插入到 LaTeX 中 然而 当我这样做时 它们通常没有相同的大小 尽管我使用相同的设置来生成它们 例如 我当前使用的 MATLAB 代码是这个 lsize 16 Label fontsiz
  • 如何使用“kubectl patch --type='json'”更新秘密

    我创建了一个这样的秘密 kubectl create secret generic test from literal username testuser from literal password 12345 我想将用户名更新为testu
  • 如何为 msbuild.exe 指定其他包含目录

    我正在尝试安装 nodejs 模块 ibm db 我遇到的问题是 为了安装此模块 node gyp 需要使用 msbuild 构建它 但它不会检测我已安装的一些头文件 如何将附加头文件的目录添加到某个路径 以便 msbuild exe 在尝
  • 识别字符串中的特殊非字母数字字符

    我正在研究密码验证 该验证应该只允许 a z 0 9 和这些字符 lt gt 我尝试使用正则表达式 但我不太擅长使用它们 而且我不确定这是否可能 或者我是否没有转义正确的字符 var allowedCharacters A Za Z0 9
  • VTKCamera焦点和位置的差异

    我正在使用 vtkCamera 并尝试移动它并使其看起来在某个点 例如 如果我想把相机放在 x y z 并让它看看 0 0 0 例如 使用 openGL 中的 gluLookAt 我们会将眼睛坐标设置为 x y z 和中心坐标 0 0 0
  • Angular 6服务注入Interceptor后未定义

    我找不到任何方法来注入我的认证服务 inside 错误处理拦截器 它返回给我一个 不明确的 注入后的对象 否则会抛出错误 这是我的错误处理拦截器 import Injectable from angular core import Auth
  • 为列表列表中的每个列表创建单独的 Counter() 对象和 Pandas DataFrame

    我能找到的所有其他答案都专门提到了在列表列表中聚合所有嵌套列表 而我希望为每个列表单独聚合 我目前有一个列表列表 master list a a b b b c c c d d d a a a c c c c c c a a f f f 我