我如何获取csv列中的出现次数并将其另存为包含python中计数的新csv

问题描述 投票:1回答:2

我是python新手,非常感谢您的帮助。我整天都在努力。我有一个包含10列的csv文件。我只对3个州,县和邮政编码感兴趣。我正在尝试获取每个列中出现的次数,例如CA 20000,TX 14000,并将计数结果输出保存在一个csv文件中,该文件可以轻松导入excel并与地理空间进一步合并文件。

我设法选择了我需要的3列


import numpy as np

from tabulate import tabulate

import pandas as pd 


#Replace with path and name file in your computer
filename = "10column.csv"

# Enter the column number that you want to display between [, , ,] no space between the commas  "usecols=[3,4,5]" 
table = np.genfromtxt(filename,delimiter=',',skip_header=0,dtype='U',usecols=[4,5,6])

print(tabulate(table))

#Insert the path and name of the file 
pd.DataFrame(table).to_csv("3column.csv") 

然后我试图计算出现的次数,但输出格式错误,因此我无法另存为csv。


import csv

from collections import Counter


import numpy as np

my_reader = csv.reader(open("3column.csv"))

#insert column number instead of the 2 "[rec[2]"
column = [rec[2] for rec in my_reader]

np.array([Counter(column)])

print(np.array([Counter(column)]))

结果是

[Counter({'22209': 10, '20007': 5, …'})]

我无法将其另存为csv,并且希望采用列表格式

zip, count
22209, 10, 20007, 10

非常感谢您的帮助

python pandas numpy csv
2个回答
0
投票

您可以将写为CSV的文件作为DataFrame读取,并使用Pandas拥有的count方法。

states_3 = pd.DataFrame(table)

state_count = states_3.count(axis='columns')

out_name = 'statecount.xlsx'
with pd.ExcelWriter(out_name) as writer:
    state_count.to_excel(writer, sheet_name='counts')

0
投票

另一种处理方法是使用熊猫value_counts()中的documentation

返回包含唯一值计数的系列。

示例数据文件7column.csv

id,state,city,zip,ip_address,latitude,longitude
1,NY,New York City,10005,246.78.179.157,40.6964,-74.0253
2,WA,Yakima,98907,79.61.127.155,46.6288,-120.574
3,OK,Oklahoma City,73109,129.226.225.133,35.4259,-97.5261
4,FL,Orlando,32859,104.196.5.159,28.4429,-81.4026
5,NY,New York City,10004,246.78.180.157,40.6964,-74.0253
6,FL,Orlando,32860,104.196.5.159,29.4429,-81.4026
7,IL,Chicago,60641,19.226.187.13,41.9453,-87.7474
8,NC,Fayetteville,28314,45.109.1.38,35.0583,-79.008
9,IL,Chicago,60642,19.226.187.14,41.9453,-87.7474
10,WA,Yakima,98907,79.61.127.156,46.6288,-120.574
11,IL,Chicago,60643,19.226.187.15,41.9453,-87.7474
12,CA,Sacramento,94237,77.208.31.167,38.3774,-121.4444
import pandas as pd

df = pd.read_csv("7column.csv")

zipcode = df["zip"].value_counts()
state = df["state"].value_counts()
city = df["city"].value_counts()

zipcode.to_csv('zipcode_count.csv')
state.to_csv('state_count.csv')
city.to_csv('city_count.csv')

CSV输出文件

state_count.csv   |   city_count.csv      |  zipcode_count.csv
,state            |   ,city               |  ,zip
IL,3              |   Chicago,3           |  98907,2
NY,2              |   Orlando,2           |  32859,1
FL,2              |   New York City,2     |  94237,1
WA,2              |   Yakima,2            |  32860,1
NC,1              |   Sacramento,1        |  28314,1
OK,1              |   Fayetteville,1      |  10005,1
CA,1              |   Oklahoma City,1     |  10004,1
                  |                       |  60643,1
                  |                       |  60642,1
                  |                       |  60641,1
                  |                       |  73109,1
© www.soinside.com 2019 - 2024. All rights reserved.