在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']
………………
……………

使用熊猫读取CSV文件

熊猫库也可以用来读取csv文件。它具有读取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

用熊猫写CSV文件

Uisng 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