从csv文件中提取用户输入的特定列的数据(无熊猫)

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

我需要一个代码帮助,该代码需要用户从我拥有的大型csv文件中输入所需的特定列。在他们自己输入所需的列之后,他们还必须输入整数输入。该整数输入将为他们提供该列出现次数最少的结果数。例如,如果他们键入:hospital_name,“ 5”,它将显示与它们关联最少的5家不同医院(该列下至少有50种不同的医院名称)。我将编写示例输入和输出:

要在哪一列中输入:医院名称输入您想要的最低结果数:3

输出可能看起来像:

                      400 births are tied to Gains Hospital                                                                            
                      347 births are tied to Petri Hospital 
                      200 births are tied to Brit Hospital 

整个csv是关于出生的报告,因此您必须计算每列中某项的次数并报告该数字(最低计数)

我已经使用“ with”读取了csv文件

我在使环路连接所有这些方面遇到麻烦。我知道用户输入本身将是input()和int(input()),但这不会将我连接回csv文件。

python csv file for-loop user-input
1个回答
0
投票

代码

import csv

column_name = input('Which column: ')
lowest = int(input('How many lowest: '))

with open("data.csv", "r") as f:
  reader = csv.DictReader(f, skipinitialspace=True, delimiter=",")
  results = {}
  for d in reader:
    # Use column_name as key
    # accumulate births for this key
    results.setdefault(d[column_name], 0)
    results[d[column_name]] += int(d['births'])

# Sort dictionary by births (values)
sorted_results = sorted(results.items(), key=lambda x: x[1])

# Output results
for name, births in sorted_results[:lowest]:
  print(f"{births} births are tied to {name} {column_name.title()}")

Test

用逗号分隔由三列组成的CSV数据:出生,医院,位置

File: data.csv

births,hospital,location
200,Gains,New York
50,Stanford Health Care,California
495,Mayo Clinic,Baltimore
45,Gains,New York
17,John Hopkins,Baltimore
25,Massachusetts General,Massachusetts
100,Stanford Health Care,Caifornia
400,Massachusetts General,Massachusetts
34,John Hopkins,Baltimore
14,Massachusetts General,Massachusetts
200,Northwestern Memorial,Pensylvania
400,UCLA Medical Center,California
347,Petri,Michigan
205,UCSF Medical Center,California

示例运行:

Which column: hospital
How many lowest: 5
51 births are tied to John Hopkins Hospital
150 births are tied to Stanford Health Care Hospital
200 births are tied to Northwestern Memorial Hospital
205 births are tied to UCSF Medical Center Hospital
245 births are tied to Gains Hospital
© www.soinside.com 2019 - 2024. All rights reserved.