📜  Python读取CSV文件

📅  最后修改于: 2020-10-28 00:57:42             🧑  作者: Mango

Python读取csv文件

CSV文件

csv代表“逗号分隔值”,它定义为一种简单的文件格式,使用特定的结构来排列表格数据。它以纯文本格式存储表格数据,例如电子表格或数据库,并具有通用的数据交换格式。一个csv文件将打开到excel工作表中,并且行和列数据定义了标准格式。

Python CSV模块功能

CSV模块工作用于处理CSV文件以从指定列读取/写入和获取数据。 CSV函数有不同类型,如下所示:

  • csv.field_size_limit-返回解析器允许的当前最大字段大小。
  • csv.get_dialect-返回与名称关联的方言。
  • csv.list_dialects-返回所有已注册方言的名称。
  • csv.reader-从csv文件读取数据
  • csv.register_dialect-将方言与名称相关联。名称必须是字符串或Unicode对象。
  • csv.writer-将数据写入csv文件
  • csv.unregister_dialect-它从方言注册表中删除与该名称关联的方言。如果名称不是注册的方言名称,则将引发错误。
  • csv.QUOTE_ALL-它指示编写器对象引用所有字段。 csv.QUOTE_MINIMAL-它指示编写器对象仅引用那些包含特殊字符(如quotechar,delimiter等)的字段。
  • csv.QUOTE_NONNUMERIC-它指示编写器对象引用所有非数字字段。
  • csv.QUOTE_NONE-它指示writer对象不要引用字段。

读取CSV文件

Python提供了各种功能来读取csv文件。我们将介绍几种阅读函数的方法。

  • 使用csv.reader()函数

在Python,csv.reader()模块用于读取csv文件。它占用文件的每一行,并列出所有列。

我们已经获取了一个名为Python.txt的txt文件,该文件具有默认的分隔符comma(,),其中包含以下数据:

name,department,birthday month  
Parker,Accounting,November  
Smith,IT,October  

import csv  
with open('python.csv') as csv_file:  
    csv_reader = csv.reader(csv_file, delimiter=',')  
    line_count = 0  
    for row in csv_reader:  
        if line_count == 0:  
            print(f'Column names are {", ".join(row)}')  
            line_count += 1  

输出:

Column names are name, department, birthday month
  Parker works in the Accounting department, and was born in November.
  Smith works in the IT department, and was born in October.
Processed 3 lines.

在上面的代码中,我们使用open()函数打开了“ Python .csv”。我们使用csv.reader()函数读取文件,该文件返回一个可迭代的reader对象。 reader对象包含数据,我们使用for循环进行迭代以print每一行的内容

将CSV读入Dictionar

我们还可以使用DictReader()函数将csv文件直接读入字典,而不用处理单个字符串元素的列表。

同样,我们的输入文件Python.txt如下:

name,department,birthday month  
Parker,Accounting,November  
Smith,IT,October  

import csv    
with open('python.txt', mode='r') as csv_file:  
    csv_reader = csv.DictReader(csv_file)  
    line_count = 0  
    for row in csv_reader:  
        if line_count == 0:  
            print(f'The Column names are as follows {", ".join(row)}')  
            line_count += 1  
        print(f'\t{row["name"]} works in the {row["department"]} department, and was born in {row["birthday month"]}.')  
        line_count += 1  
    print(f'Processed {line_count} lines.')  

输出:

The Column names are as follows name, department, birthday month
   Parker works in the Accounting department, and was born in November.
   Smith works in the IT department, and was born in October.
Processed 3 lines.

使用Pandas读取csv文件

Pandas被定义为在NumPy库顶部构建的开源库。它为用户提供快速的分析,数据清理和数据准备。

将csv文件读入pandas DataFrame是快速而直接的。我们不需要编写足够的代码行即可在熊猫中打开,分析和读取csv文件,并将其存储在DataFrame中。

在这里,我们正在读取一个稍微复杂的文件hrdata.csv,其中包含公司员工的数据。

Name,Hire Date,Salary,Leaves Remaining  
John Idle,08/15/14,50000.00,10  
Smith Gilliam,04/07/15,65000.00,8  
Parker Chapman,02/21/14,45000.00,10  
Jones Palin,10/14/13,70000.00,3  
Terry Gilliam,07/22/14,48000.00,7  
Michael Palin,06/28/13,66000.00,8  

import pandas  
df = pandas.read_csv('hrdata.csv')  
print(df)  

在上面的代码中,三行足以读取文件,并且只有其中一行正在执行实际工作,即pandas.read_csv()

输出:

         Name                Hire Date     Salary      Leaves Remaining
0     John Idle              03/15/14      50000.0       10
1     Smith Gilliam          06/01/15      65000.0       8
2     Parker Chapman         05/12/14      45000.0       10
3     Jones Palin            11/01/13      70000.0       3
4     Terry Gilliam          08/12/14      48000.0       7
5     Michael Palin          05/23/13      66000.0       8