python - 遍历 csv 文件并创建表
问题描述
我正在尝试读取 .csv 文件并提取特定列,以便我可以输出一个表,该表基本上对特定列执行“GROUP BY”并聚合某些其他感兴趣的列(类似于您在 SQL 中的方式) ) 但我不太熟悉如何在 Python 中轻松地做到这一点。
csv 文件格式如下:
age,education,balance,approved
30,primary,1850,yes
54,secondary,800,no
24,tertiary,240,yes
我尝试导入并读取 csv 文件以解析我关心的三列并遍历它们以将它们放入三个单独的数组列表中。我不太熟悉包以及如何将它们放入具有 3 列的数据框或矩阵中,以便我可以遍历它们进行变异或执行所有聚合输出字段(请参见下面的预期结果)。
with open('loans.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter = ',')
next(readCSV) ##skips header row
education = []
balance = []
loan_approved = []
for row in readCSV:
educat = row[1]
bal = row[2]
approve = row[3]
education.append(educat)
balance.append(bal)
loan_approved.append(approve)
print(education)
print(balance)
print(loan_approved)
输出将是一个 4x7 的四行表格(按教育程度分组)和以下标题:
Education|#Applicants|Min Bal|Max Bal|#Approved|#Rejected|%Apps Approved
Primary ...
Secondary ...
Terciary ...
解决方案
改用 Pandas 似乎要简单得多。例如,您可以只读取您关心的列而不是所有列:
import Pandas as pd
df = pd.read_csv(usecols=['education', 'balance', 'loan_approved'])
现在,按教育程度分组,您可以找到该列的所有唯一条目并将它们分组:
groupby_education = {}
for level in list(set(df['education'])):
groupby_education[level] = df.loc[df['education'] == level]
print(groupby_education)
我希望这会有所帮助。如果您还需要帮助,请告诉我。干杯!
推荐阅读
- r - 通过组合因素从数据框创建子集
- linux - 修改 ELF 中数据部分的内容
- javascript - MERN:react-router-dom
不在 Heroku 工作 - javascript - javascript equivalent for python regex yes-pattern no-pattern
- javascript - js (vanilla) - 在元素 1 上放置图像并处理默认文件上传器中的放置
- java - Parsing json configuration with multiple primary keys
- javascript - javascript转换根本不适用
- c++ - 如何在 Visual Studio 的 cmake 项目中设置 PATH 变量?
- javascript - 基于光标位置的固定区域
- html - lxml 相对 xPath 不返回相对于给定 HtmlElement 的结果