Итерация по CSV-файлу и создание таблицы - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь прочитать в файле .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)

Результатом будет таблица 4х7 из четырех строк (сгруппированных по уровню образования) и следующих заголовков:

Education|#Applicants|Min Bal|Max Bal|#Approved|#Rejected|%Apps Approved
Primary  ...
Secondary  ...
Terciary ...

1 Ответ

1 голос
/ 12 мая 2019

Кажется, намного проще, если использовать вместо этого Панд.Например, вы можете читать только те столбцы, которые вам нужны, а не все из них:

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)

Надеюсь, это помогло.Дайте мне знать, если вам все еще нужна помощь.Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...