Найти - Пользователи
Полная версия: чтение файла csv в двумерную матрицу
Начало » Центр помощи » чтение файла csv в двумерную матрицу
1
Beloved
Доброго времени суток!
Только начинаю работать с этим языком.
Встал в тупик при работе с файлом в формате *.csv
Имеется файл такого формата, нужно распарсить его в двумерный массив 9 столбцов 10 строк, чтобы дальше можно было работать с ним выбирая статистику.

Для открытия файла и считывания его построчно использовал следующий код:
 import csv
with open("z.csv", 'r', newline='') as f:
    reader = csv.reader(f, delimiter=';')
    d = f.readlines();
в результате:
F;18;A;at_home;teacher;no;1;1;3
F;17;T;at_home;other;yes;1;1;3
F;15;T;at_home;other;yes;2;3;3
F;15;T;health;services;yes;1;1;5
F;16;T;other;other;no;1;2;5
M;16;T;services;other;yes;1;2;5
M;16;T;other;other;yes;1;1;3
F;17;A;other;teacher;no;1;1;1
M;15;A;services;other;yes;1;1;1
M;15;T;other;other;yes;1;1;5


Хотелось бы видеть массив вида
M 15 A services other yes 1 1 1
M 15 T other other yes 1 1 5


Подскажите пожалуйста, что необходимо сделать дальше, чтобы можно было выбирать данные из файла и например построить графики (по оси x индекс по оси y второй столбец)
scidam
В своем коде вы никак не используете csv, нужно так:

 with open("z.csv", 'r') as f:
    reader = csv.reader(f, delimiter=';')
    for row in reader:
        print row


А вообще, для подобных задач (загрузки и первичной обработки данных) очень хорошо подходит пакет pandas.
JOHN_16
scidam
scidam
В своем коде вы никак не используете csv,
Beloved
csv.reader(f, delimiter=';')
в следующий раз будьте внимательнее
noob_saibot
 from pandas import read_csv
dataset_RS = read_csv(path, ';', header=None)

PS. Пандас просто ТОРТ.
scidam
JOHN_16
в следующий раз будьте внимательнее

Да я видел ту строку (reader = csv.reader(f, delimiter=';')), но, видимо, не совсем удачно выразился… Просто созданный reader никак не использовался далее.
Beloved
noob_saibot
from pandas import read_csv
dataset_RS = read_csv(path, ‘;’, header=None)

PS. Пандас просто ТОРТ.
Отредактировано noob_saibot (вчера 11:43:18)
Спасибо большое, сделал так. Еще вопрос остался, можно ли получить доступ к данным в полученном DataFrame по типу Linq или как-то по другому делается?
Если например необходимо получить среднее число для атрибута 3 колонки при условии, что атрибут в первой колонке равен M, а во второй 16??
noob_saibot
Beloved
Третья колонка текстовая, вы хотите найти чаще всего повторяющееся значение?
А если среднее для числовой то так, например:
 print dataset_RS[(dataset_RS[0] == 'M') & (dataset_RS[1] == 16)][8].mean()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB