Вопрос:

узнать много предметов есть в словаре в CSV-файл

python csv dictionary

32 просмотра

2 ответа

170 Репутация автора

CSV-файл имеет следующее содержимое: он показывает, что в CSV-файле есть столбцы

производитель модель диспле год цил транс дрв cти ху фл класс
1 audi a4 1.8 1999 4 авто (l5) f 18 29 p компактный
2 audi a4 1.8 1999 4 руководство (m5) f 21 29 p компактный

Я пишу программу, которая импортирует данные файла CSV следующим образом.

import csv
with open('mpg.csv') as csvfile:
    mpg = list(csv.DictReader(csvfile))

mpg[:3] 

вывод следующий

[OrderedDict([('', '1'),
              ('manufacturer', 'audi'),
              ('model', 'a4'),
              ('displ', '1.8'),
              ('year', '1999'),
              ('cyl', '4'),
              ('trans', 'auto(l5)'),
              ('drv', 'f'),
              ('cty', '18'),
              ('hwy', '29'),
              ('fl', 'p'),
              ('class', 'compact')]),
 OrderedDict([('', '2'),
              ('manufacturer', 'audi'),
              ('model', 'a4'),
              ('displ', '1.8'),
              ('year', '1999'),
              ('cyl', '4'),
              ('trans', 'manual(m5)'),
              ('drv', 'f'),
              ('cty', '21'),
              ('hwy', '29'),
              ('fl', 'p'),
              ('class', 'compact')]),
 OrderedDict([('', '3'),
              ('manufacturer', 'audi'),
              ('model', 'a4'),
              ('displ', '2'),
              ('year', '2008'),
              ('cyl', '4'),
              ('trans', 'manual(m6)'),
              ('drv', 'f'),
              ('cty', '20'),
              ('hwy', '31'),
              ('fl', 'p'),
              ('class', 'compact')])]

Я хочу посчитать количество элементов в CSV-файле. Если я хочу посчитать, сколько объектов есть в каждом столбце, то есть отдельных столбцах, или посчитать их, например, найти среднее значение и т. Д. По ценам, то как это сделать в python. Я легко могу сделать это в листе Excel, но я не понимаю, как это сделать. Попытка найти имена столбцов с ключами

import csv
with open('mpg.csv','r') as csvfile:
     reader=csv.reader(csvfile)
     col_name={rows[0]:row[1] for rows in reader}

это дает мне ошибки

NameError                                 Traceback (most recent call last)
<ipython-input-73-ac3bfb72c9e9> in <module>
      2 with open('mpg.csv','r') as csvfile:
      3      reader=csv.reader(csvfile)
----> 4      col_name={rows[0]:row[1] for rows in reader}

<ipython-input-73-ac3bfb72c9e9> in <dictcomp>(.0)
      2 with open('mpg.csv','r') as csvfile:
      3      reader=csv.reader(csvfile)
----> 4      col_name={rows[0]:row[1] for rows in reader}

NameError: name 'row' is not defined

тогда я пытаюсь сделать следующее

  • Сгруппируйте автомобили по количеству цилиндров и определите среднее значение cty mpg для каждой группы.
  • Найти среднюю экономию топлива по всем автомобилям. Все значения в словарях являются строками.
  • Найти среднюю экономию топлива по всем автомобилям
Автор: ss321c Источник Размещён: 11.08.2019 05:42

Ответы (2)


0 плюса

17917 Репутация автора

Если у вас есть данные в списке mpg, вы можете использовать, например, statisticsмодуль Python, чтобы найти среднее ( doc ):

from statistics import mean

print(mean(float(item['cty']) for item in mpg))

Примечание: для среднего hwyрасхода топлива поменяйте ключ ctyна hwy.


Для поиска имен столбцов, например:

print(list(mpg[0].keys()))

Печать:

['', 'manufacturer', 'model', 'displ', 'year', 'cyl', 'trans', 'drv', 'cty', 'hwy', 'fl', 'class']

Отображение только столбца cty:

print([item['cty'] for item in mpg])

Печать:

['18', '21', '20']

Подробнее о списках в официальной документации .


РЕДАКТИРОВАТЬ: Для группировки вы можете использовать itertools.groupby( док ). Это позволит сгруппировать автомобили по количеству цилиндров и найти среднее значение cty mpg для каждой группы:

from statistics import mean
from itertools import groupby

for v, g in groupby(sorted(mpg, key=lambda k: int(k['cyl'])), lambda k: int(k['cyl'])):
    print('Number of cylinders: {}, average cty mpg: {}'.format(v, mean(float(item['cty']) for item in g)))

РЕДАКТИРОВАТЬ: чтение из .csv:

import csv
from statistics import mean

with open('mpg.csv','r') as csvfile:
    reader=list(csv.DictReader(csvfile, delimiter='\t')) # change the delimiter to what is in your csv file
    print (mean(float(item['cty']) for item in reader))  # note the parenthesis around item['cty']: float(item['cty'])
Автор: Andrej Kesely Размещён: 11.08.2019 06:13

0 плюса

1205 Репутация автора

Используйте, pandasпотому что это именно то, для чего это

import pandas as pd

df = pd.read_csv('mpg.csv')

df.describe()  # provides all stats

df.info()  # info about each column
  • панд
  • Pandas Dataframe Исследование : перейдите в этот блокнот и найдите, mpgи вы найдете аналогичное исследование автомобильного набора данных.
Автор: Trenton_M Размещён: 11.08.2019 07:15
Вопросы из категории :
32x32