【问题标题】:reading CSV files and extracting info读取 CSV 文件并提取信息
【发布时间】:2021-08-08 22:49:05
【问题描述】:

我是 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()

但是,我的问题是,我编写什么代码来生成频率报告(最不频繁的优先),顺便说一下,数据列表很长。

此外,如果有人知道使用什么代码来查找最受欢迎(最常用的项目)。

还有什么代码可以生成用户借用物品的平均时长、用户延迟归还的比例以及平均延迟时间的报告。

【问题讨论】:

  • 我们不知道您的数据是什么样的,我们很难说。您可能想查看可以为您完成大量此类工作的 pandas 数据框
  • 欢迎来到 Stack Overflow!你在同一个线程上问了很多问题。考虑进行更多研究并提出更具体的问题
  • 我们需要知道 CSV 中有哪些字段及其顺序。
  • 有两个 CSV 文件。我正在 Jupyter Notebook 中做。文件 books.csv 包含 CSV(逗号分隔值)格式的图书列表(子集)。 CSV 文件被编码为 UTF-8。文件 bookloans.csv 包含 CSV 格式的图书借阅数据。文件的每一行(没有标题行)包含一个用逗号分隔的 book_number、member_number、date_of_loan 和 date_of_return。如果图书尚未归还,则 date_of_return 记录为 0(零)。 date_of_loan 是一个整数,表示 Microsoft Excel Epoch 格式的贷款日期。

标签: python csv average


【解决方案1】:

要管理来自 csv 文件的数据,这本质上是一种存储 2 路表数据的方式,我建议您使用非常流行的库 "pandas"

它允许您以这种“形式因素”表示数据,并内置了从 csv 以及许多其他流行文件格式(excel 表、hd5、pickle、parquet、feather.. . 仅举几例)

Here is a link 到一个解释如何使用 pandas 从 csv 文件加载数据的网站。

然后,使用您的 panda 对象,您可以对列或行执行 .mean(使用 panda_data.mean(axis=0)panda_data.mean(axis=1) 分别沿列或行执行均值)

您还有很多有用的方法来查找表中数据的出现次数、特定项目的频率等。您可以使用 panda 对象轻松找到解决您提到的每个特定应用程序的方法的线程,在堆栈溢出或其他地方。

【讨论】:

    【解决方案2】:

    要做你想做的事,你应该遵循一些步骤:

    1-循环读取工作表中的行

    2-在这个循环内部,在另一个循环中读取每一行,然后从循环中的行中读取每个项目,然后检查它不是空格字符,然后将项目添加到容器中,列表

    3-在列表中的每个元素中创建一个循环并计算它在列表中重复的次数,然后添加该元素并在字典中重复次数

    4-在dict中找到最大值,然后在字典中找到这个值的key

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2020-12-19
      • 2019-10-14
      相关资源
      最近更新 更多