чтение файлов CSV и извлечение информации

avatar
Kulsuma Ellie
8 августа 2021 в 22:49
73
2
-2

Я новичок в Python.

Мне удалось научиться импортировать файлы CSV и читать их.

Однако я изо всех сил пытаюсь понять, как извлекать определенные данные.

Это мой код для чтения данных

import csv

try:
    with open ("books.csv", mode="r", encoding="utf-8")as file:
        csvFile = csv.reader(file)
    
    for row in csvFile:
        print (row)

except:
    print("file cannot be open")

finally:
  file.close()

Тем не менее, мой вопрос заключается в том, какой код я пишу для получения отчета о частоте (наименее частый сначала), кстати, список данных длинный.

Далее, если кто-нибудь знает, какой код использовать для поиска самого популярного (наиболее часто используемого товара).

Кроме того, какой код используется для создания отчета о средней продолжительности времени, в течение которого пользователь одалживал элемент, и доле пользователей, вернувшихся с опозданием, а также о среднем периоде задержки.

Источник
Chris Doyle
8 августа 2021 в 22:55
1

Мы понятия не имеем, как выглядят ваши данные, поэтому нам трудно сказать. Возможно, вы захотите взглянуть на фреймы данных pandas, которые могут сделать большую часть этой работы за вас.

luizbarcelos
8 августа 2021 в 22:55
0

Добро пожаловать в Stack Overflow! Вы задаете много вопросов в одной и той же теме. Подумайте о том, чтобы изучить немного больше и задать более конкретные вопросы.

martineau
8 августа 2021 в 23:16
0

Нам нужно знать, какие поля есть в CSV и их порядок.

Kulsuma Ellie
8 августа 2021 в 23:17
0

есть два файла CSV. А я делаю в Jupyter Notebook. Файл books.csv содержит список (подмножество) их книг в формате CSV (значения, разделенные запятыми). Файлы CSV имеют кодировку UTF-8. Файл bookloans.csv содержит данные о выдаче книг в формате CSV. Каждая строка файла (нет строки заголовка) содержит book_number, member_number, date_of_loan и date_of_return, разделенные запятыми. Дата_возврата записывается как 0 (ноль), если книга не была возвращена. Date_of_loan — это одно целое число, представляющее дату ссуды в формате эпохи Microsoft Excel.

Ответы (2)

avatar
Osamoele
8 августа 2021 в 22:58
0

Для управления данными, поступающими из CSV-файлов, которые по сути представляют собой способ хранения данных двухсторонних таблиц, я предлагаю вам использовать очень популярную библиотеку под названием "pandas".

Он позволяет вам представлять данные в таком "форм-факторе" и имеет встроенные классы для загрузки/сохранения данных из/в csv, а также многие другие популярные форматы файлов (листы Excel, hd5, pickle, паркет, перо.. , чтобы назвать несколько)

Вот ссылка на веб-сайт, на котором объясняется, как загружать данные из CSV-файлов с помощью pandas.

А затем с помощью объекта panda вы можете выполнить .mean для столбца или строки (используйте panda_data.mean(axis=0) или panda_data.mean(axis=1) для выполнения среднего значения по столбцам или строке соответственно)

У вас также есть много полезных методов, чтобы найти количество вхождений данных в вашей таблице, частоту определенных элементов и т. д. Вы можете легко найти потоки, в которых рассматриваются средства для выполнения каждого конкретного приложения, которое вы упомянули, используя объекты панды, при переполнении стека или в другом месте.

avatar
user15605156
8 августа 2021 в 23:18
0

чтобы сделать то, что вы хотите, вы должны выполнить несколько шагов:

1-чтение строк с листа в цикле

2-внутри этого цикла прочитайте каждую строку в другом цикле, затем прочитайте каждый элемент из строки в цикле, затем проверьте, что это не пробел, затем добавьте элементы в контейнер, список

3-создайте цикл в каждом элементе внутри списка и подсчитайте, сколько раз он повторялся внутри списка, затем добавьте элемент и количество повторений в словарь

4-найти максимальное значение в словаре, затем найти ключ этого значения в словаре

import csv
repeated = {}
list_all = []
try:
    with open ("bb.csv", mode="r", encoding="utf-8")as file:
        csvFile = csv.reader(file)
        for row in csvFile:
            for dat in row:
                for y in dat:
                    if y != " ":
                        list_all.append(y)
    for dat in list_all:
        counter = list_all.count(dat)
        repeated[dat] = counter
    
    max_val = (max(repeated.values()))
    for key,value in repeated.items():
        if value == max_val:
            print("the max item is: {}, and was repeated: {} times".format(key,max_val))
except:
    print("file cannot be open")

finally:
    file.close()