Python:如何最好地解析csv和仅计数一个子集的值

史蒂夫

我有一个CSV文件,该文件具有3列11行的以下内容,第一行是标题。我自己创建了这个文件,以获取一个简单的文件。每个订单项都是一个水果订单。

OrderNo      Fruit     Origin
1           Apple        NY
2           Orange       FL      
3           Banana       CA
4           Pear         NJ
5           Grapes       VA
6           Grapes       VA
7           Grapes       MD
8           Grapes       MA
9           Pineapple    HI
10          Grapes       GA

我正在尝试在Python中解析此数据,以执行以下操作:

(1)确定为每种水果生成最多订单的状态,(2)从每种水果的任何单个状态确定订单的最高数量,(3)以字母顺序输出此结果,如下所示:

Apple NY 1
Banana CA 1
Grapes VA 2
Orange FL 1
Pear NJ 1
Pineapple HI 1

用csv.reader读取csv文件后,我试图用Counter和for循环完成计数:

import csv
from collections import Counter 

cnt = Counter()
f = open("/test.csv")
reader = csv.reader(f, delimiter=",")
header = next(f) 

for row in reader:   
    cnt[row[2]] += 1 

但是有更好的方法吗?

汤姆

我实际上会使用pandas,它是list / dictionary / spreadsheet / database的组合。它是专门为以这种方式处理数据而设计的。

import pandas as pd
from collections import defaultdict

path_to_file = "/test.csv"
df = pd.read_csv(path_to_file)

groups = df.groupby(['Fruit', 'Origin'])
max_for_fruit = defaultdict(int) #first pass through the groups, store the maximum for each fruit to handle ties

for g in groups:
    fruit, count = g[0][0], len(g[1])
    max_for_fruit[ fruit ] = max( max_for_fruit[fruit], count )

for g in groups:
    fruit, state, count = g[0][0], g[0][1], len(g[1])
    if count == max_for_fruit[ fruit ]:
        print( "{} {} {}".format(fruit, state, count ) )

这是输出。

Apple NY 1
Banana CA 1
Grapes VA 2
Orange FL 1
Pear NJ 1
Pineapple HI 1

http://pandas.pydata.org/pandas-docs/stable/groupby.html

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html

http://pandas.pydata.org/pandas-docs/stable/tutorials.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:如何最好地解析csv和仅计数一个子集的值

来自分类Dev

如何仅选择语料库术语的一个子集以在tm中创建TermDocumentMatrix

来自分类Dev

Android:如何仅请求 DEVICE_ADMIN 权限的一个子集

来自分类Dev

如何设置一个 bitbake/Yocto 配方以仅使用 boost 库的一个子集?

来自分类Dev

熊猫和csv导入到数据框。如何最好地将日期和日期字段组合为一个

来自分类Dev

如何最好地复制一个Android项目?

来自分类Dev

reduxForm:如何最好地调度一个动作?

来自分类Dev

根据一个或多个data.frame值创建一个子集函数

来自分类Dev

如何通过仅使用纯函数计算来“消耗CPU”来最好地“浪费”一个大致指定的时间?

来自分类Dev

从更大的SQL选择中有效地选择一个子集

来自分类Dev

如何在Python枚举中优雅地找到下一个和上一个值?

来自分类Dev

如何在Python枚举中优雅地找到下一个和上一个值?

来自分类Dev

如何对另一个子集进行子集或“分组”?

来自分类Dev

如何为一个分支和多个子集的数据集显示不同颜色的d3气泡?

来自分类Dev

使用dplyr将值从所选子集的一个子集复制到所有其他子集

来自分类Dev

Rails:仅包含模型A的所有内容,并且仅包含相关模型B的一个子集

来自分类Dev

在列中找到最频繁的值,并取其中的一个子集

来自分类Dev

使用 do until 最好地抵消一个值吗?

来自分类Dev

如何找到从k个子集中选择一个的组合数量

来自分类Dev

如何删除数据文件中每组列的第一个子集?

来自分类Dev

Python从元组中提取一个子集即SQL结果

来自分类Dev

仅解析xml文件中的下一个子级别类别

来自分类Dev

创建一个子集对象,该子对象仅包含现有对象的某些属性

来自分类Dev

Python 3.4.2和csv.DictReader错误地解析第一个字段名称的问题

来自分类Dev

datetimeindex的另一个子集?

来自分类Dev

numpy的:工作矩阵的一个子集

来自分类Dev

使用nHibernate QueryOver来加入一个子集

来自分类Dev

修改熊猫的一个子集多指标

来自分类Dev

检查数字列表是一个子集

Related 相关文章

  1. 1

    Python:如何最好地解析csv和仅计数一个子集的值

  2. 2

    如何仅选择语料库术语的一个子集以在tm中创建TermDocumentMatrix

  3. 3

    Android:如何仅请求 DEVICE_ADMIN 权限的一个子集

  4. 4

    如何设置一个 bitbake/Yocto 配方以仅使用 boost 库的一个子集?

  5. 5

    熊猫和csv导入到数据框。如何最好地将日期和日期字段组合为一个

  6. 6

    如何最好地复制一个Android项目?

  7. 7

    reduxForm:如何最好地调度一个动作?

  8. 8

    根据一个或多个data.frame值创建一个子集函数

  9. 9

    如何通过仅使用纯函数计算来“消耗CPU”来最好地“浪费”一个大致指定的时间?

  10. 10

    从更大的SQL选择中有效地选择一个子集

  11. 11

    如何在Python枚举中优雅地找到下一个和上一个值?

  12. 12

    如何在Python枚举中优雅地找到下一个和上一个值?

  13. 13

    如何对另一个子集进行子集或“分组”?

  14. 14

    如何为一个分支和多个子集的数据集显示不同颜色的d3气泡?

  15. 15

    使用dplyr将值从所选子集的一个子集复制到所有其他子集

  16. 16

    Rails:仅包含模型A的所有内容,并且仅包含相关模型B的一个子集

  17. 17

    在列中找到最频繁的值,并取其中的一个子集

  18. 18

    使用 do until 最好地抵消一个值吗?

  19. 19

    如何找到从k个子集中选择一个的组合数量

  20. 20

    如何删除数据文件中每组列的第一个子集?

  21. 21

    Python从元组中提取一个子集即SQL结果

  22. 22

    仅解析xml文件中的下一个子级别类别

  23. 23

    创建一个子集对象,该子对象仅包含现有对象的某些属性

  24. 24

    Python 3.4.2和csv.DictReader错误地解析第一个字段名称的问题

  25. 25

    datetimeindex的另一个子集?

  26. 26

    numpy的:工作矩阵的一个子集

  27. 27

    使用nHibernate QueryOver来加入一个子集

  28. 28

    修改熊猫的一个子集多指标

  29. 29

    检查数字列表是一个子集

热门标签

归档