Python - 处理 CSV 数据

从 CSV(逗号分隔值)读取数据是数据科学的基本要求。通常,我们从各种来源获取数据,这些数据可以导出为 CSV 格式,以便其他系统使用。Panadas 库提供的功能可让我们读取完整的 CSV 文件以及仅读取选定的一组列和行的部分内容。

输入为 CSV 文件

csv 文件是一个文本文件,其中列中的值用逗号分隔。让我们考虑名为 input.csv 的文件中存在的以下数据。

您可以通过复制和粘贴此数据使用 Windows 记事本创建此文件。使用记事本中的另存为所有文件 (*.*) 选项将文件另存为 input.csv

id,name,salary,start_date,dept
1,Rick,623.3,2012-01-01,IT
2,Dan,515.2,2013-09-23,Operations
3,Tusar,611,2014-11-15,IT
4,Ryan,729,2014-05-11,HR
5,Gary,843.25,2015-03-27,Finance
6,Rasmi,578,2013-05-21,IT
7,Pranab,632.8,2013-07-30,Operations
8,Guru,722.5,2014-06-17,Finance

读取 CSV 文件

pandas 库的 read_csv 函数用于将 CSV 文件的内容作为 pandas DataFrame 读入 python 环境。该函数可以使用文件的正确路径从操作系统读取文件。

import pandas as pd
data = pd.read_csv('path/input.csv')
print (data)

当我们执行上述代码时,它会产生以下结果。请注意该函数如何创建以零开头的附加列作为索引。

   id    name  salary  start_date        dept
0   1    Rick  623.30  2012-01-01          IT
1   2     Dan  515.20  2013-09-23  Operations
2   3   Tusar  611.00  2014-11-15          IT
3   4    Ryan  729.00  2014-05-11          HR
4   5    Gary  843.25  2015-03-27     Finance
5   6   Rasmi  578.00  2013-05-21          IT
6   7  Pranab  632.80  2013-07-30  Operations
7   8    Guru  722.50  2014-06-17     Finance

读取特定行

pandas 库的 read_csv 函数也可用于读取给定列的某些特定行。我们使用下面显示的代码对 read_csv 函数的结果进行切片,以获得名为 salary 的列的前 5 行。

import pandas as pd
data = pd.read_csv('path/input.csv')

# 对结果进行切片,以获得前 5 行
print (data[0:5]['salary'])

当我们执行上述代码时,它会产生以下结果。

0 623.30
1 515.20
2 611.00
3 729.00
4 843.25
名称:salary,dtype:float64

读取特定列

pandas 库的 read_csv 函数也可用于读取某些特定列。 为此,我们使用名为 .loc() 的多轴索引方法。我们选择显示所有行的薪水和姓名列。

import pandas as pd
data = pd.read_csv('path/input.csv')

# Use the multi-axes indexing funtion
print (data.loc[:,['salary','name']])

当我们执行上述代码时,它会产生以下结果。

   salary    name
0  623.30    Rick
1  515.20     Dan
2  611.00   Tusar
3  729.00    Ryan
4  843.25    Gary
5  578.00   Rasmi
6  632.80  Pranab
7  722.50    Guru

读取特定列和行

pandas 库的 read_csv 函数也可用于读取某些特定列和特定行。 为此,我们使用名为 .loc() 的多轴索引方法。我们选择显示某些行的薪水和姓名列。

import pandas as pd
data = pd.read_csv('path/input.csv')

# 使用多轴索引函数
print (data.loc[[1,3,5],['salary','name']])

当我们执行上述代码时,它会产生以下结果。

salary name
1 515.2 Dan
3 729.0 Ryan
5 578.0 Rasmi

读取特定列的行范围

pandas 库的 read_csv 函数也可用于读取某些特定列和行范围。 为此,我们使用名为 .loc() 的多轴索引方法。我们选择显示某些行的薪水和姓名列。

import pandas as pd
data = pd.read_csv('path/input.csv')

# Use the multi-axes indexing funtion
print (data.loc[2:6,['salary','name']])

当我们执行上述代码时,它会产生以下结果。

   salary    name
2  611.00   Tusar
3  729.00    Ryan
4  843.25    Gary
5  578.00   Rasmi
6  632.80  Pranab