Python编程中使用csv文件


CSV文件(逗号分隔值文件)是跨平台存储和共享数据的最广泛使用的平面文件之一。列以逗号分隔,还有一个可选的标题行,用于指示每列的名称。Python可以使用许多模块来读取CSV文件。在本文中,我们将了解如何使用Python中的CSV库来读取和写入CSV文件。我们还可以看到仅使用pandas库读取CSV文件。

使用csv模块读取CSV文件

您可以从(https://www.guru99.com/python-csv.html)获取CSV文件

示例

import csv
with open('C:\iris.csv','rt')as file:
   csv_rows = csv.reader(file)
   for row in csv_rows:
      print(row)

输出

运行以上代码将给出以下结果:

['sepal.length', 'sepal.width', 'petal.length', 'petal.width', 'variety']
['5.1', '3.5', '1.4', '.2', 'Setosa']
['4.9', '3', '1.4', '.2', 'Setosa']
['4.7', '3.2', '1.3', '.2', 'Setosa']
['4.6', '3.1', '1.5', '.2', 'Setosa']
['5', '3.6', '1.4', '.2', 'Setosa']
['5.4', '3.9', '1.7', '.4', 'Setosa']
['4.6', '3.4', '1.4', '.3', 'Setosa']
………………
……………

使用Pandas读取CSV文件

Pandas库也可以用于读取csv文件。它具有用于读取csv的方法,可以直接应用,绕过路径和文件名。读取文件后,它将成为一个数据集,然后我们可以根据需要打印数据集的不同部分。

示例

import pandas as pd
datainput = pd.read_csv('C:\iris.csv')
print("Given dataset values : \n", datainput)
#size of the dataset
print("\nThe size of the dataset is :\n",datainput.shape)
#printing few rows from the dataset
print("\n printing few rows from the dataset :\n",datainput[0:6])

输出

运行以上代码将给出以下结果:

Given dataset values :
   sepal.length    sepal.width    petal.length    petal.width    variety
0           5.1            3.5             1.4            0.2     Setosa
1           4.9            3.0             1.4            0.2     Setosa
2           4.7            3.2             1.3            0.2     Setosa
3           4.6            3.1             1.5            0.2     Setosa
4           5.0            3.6             1.4            0.2     Setosa
..          ...            ...             ...            ...        ...
145         6.7            3.0             5.2            2.3  Virginica
146         6.3            2.5             5.0            1.9  Virginica
147         6.5            3.0             5.2            2.0  Virginica
148         6.2            3.4             5.4            2.3  Virginica
149         5.9            3.0             5.1            1.8  Virginica
[150 rows x 5 columns]
The size of the dataset is :
(150, 5)
printing few rows from the dataset :
     sepal.length      sepal.width    petal.length    petal.width    variety
0             5.1              3.5             1.4            0.2     Setosa
1             4.9              3.0             1.4            0.2     Setosa
2             4.7              3.2             1.3            0.2     Setosa
3             4.6              3.1             1.5            0.2     Setosa
4             5.0              3.6             1.4            0.2     Setosa
5             5.4              3.9             1.7            0.4     Setosa

使用csv模块写入CSV文件

要创建csv文件,我们使用Python列表,我们声明一个数据集,其中每一行作为一个列表,所有行都是一个大的单一列表中的子列表。我们还创建另一个数据集,它只表示标题行。然后我们使用writerow()和csv.writer等各种方法,最终将文件写入本地系统。

示例

import csv
data = ["Month", "1958", "1959", "1960"]
x = [
["JAN", 340, 360, 417],
["FEB", 318, 342, 391],
["MAR", 362, 406, 419],
["APR", 348, 396, 461],
["MAY", 363, 420, 472],
["JUN", 435, 472, 535],
["JUL", 491, 548, 622],
["AUG", 505, 559, 606],
["SEP", 404, 463, 508],
["OCT", 359, 407, 461],
["NOV", 310, 362, 390],
["DEC", 337, 405, 432],
]
y = "C:\years.csv"
with open(y, 'w') as work:
   z = csv.writer(work)
   z.writerow(data)
   z.writerows(x)

输出

运行以上代码将给出以下结果:

Month,1958,1959,1960
JAN,340,360,417
FEB,318,342,391
MAR,362,406,419
APR,348,396,461
MAY,363,420,472
JUN,435,472,535
JUL,491,548,622
AUG,505,559,606
SEP,404,463,508
OCT,359,407,461
NOV,310,362,390
DEC,337,405,432

使用pandas写入CSV文件

使用pandas,我们创建一个数据框,其中国家既是行,也是行的标题。然后我们使用to_csv方法,该方法将文件名和路径作为参数,并将数据写入csv文件。

示例

from pandas import DataFrame
C = {'Month': ['JAN','FEB', 'MAR'],
   '1958': ['345', '435', '545'],
   '1959': ['377', '135', '985'],
   '1960': ['498', '354', '765'],
}
df = DataFrame(C, columns= ["Month", "1958", "1959", "1960"])
export_csv = df.to_csv (r'C:\years_p.csv', index = None, header=True) # here you have to write path, where result file will be stored
print (df)

输出

运行以上代码将给出以下结果:

   Month 1958 1959 1960
0  JAN   345  377  498
1  FEB   435  135  354
2  MAR   545  985  765

更新于:2020年2月14日

1K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告