Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทำงานกับไฟล์ CSV ในการเขียนโปรแกรม Python

ไฟล์ CSV (comma separated values) เป็นไฟล์แบน (flat file) ที่ใช้กันอย่างแพร่หลายในการจัดเก็บและแชร์ข้อมูลข้ามแพลตฟอร์ม คอลัมน์ถูกคั่นด้วยคอมมา และมีแถวส่วนหัว (header row) ที่อาจมีหรือไม่มี ซึ่งจะบ่งบอกชื่อของแต่ละคอลัมน์ Python สามารถอ่านไฟล์ CSV ได้ด้วยหลายโมดูล ในบทความนี้เราจะมาดูวิธีที่ไลบรารี CSV ใน Python สามารถใช้เพื่ออ่านและเขียนไฟล์ CSV เรายังสามารถใช้ไลบรารี pandas เพื่ออ่านไฟล์ CSV ได้อีกด้วย

อ่านไฟล์ CSV ด้วยโมดูล csv

เราสามารถดาวน์โหลดไฟล์ CSV ได้จาก (https://www.guru99.com/python-csv.html)

ตัวอย่าง

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 ด้วย Pandas

ไลบรารี Pandas ก็สามารถใช้เพื่ออ่านไฟล์ CSV ได้ มีเมธอดสำหรับอ่าน CSV ที่สามารถนำไปใช้โดยตรงโดยส่งพาธและชื่อไฟล์ หลังจากอ่านไฟล์แล้วมันจะกลายเป็นชุดข้อมูล และเราสามารถพิมพ์ส่วนต่างๆ ของชุดข้อมูลตามต้องการ

ตัวอย่าง

import pandas as pd
datainput = pd.read_csv('C:\\iris.csv')
print("Given dataset values : \n", datainput)
# ขนาดของชุดข้อมูล
print("\nThe size of the dataset is :\n", datainput.shape)
# พิมพ์บางแถวจากชุดข้อมูล
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 เราประกาศชุดข้อมูลที่มีแต่ละแถวเป็นรายการ และทุกแถวเป็น sublist ในรายการใหญ่เดียว เรายังสร้างชุดข้อมูลอีกชุดที่แทนแถวส่วนหัว จากนั้นเราใช้เมธอดต่างๆ เช่น 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 ด้วย pandas

ใช้ pandas เราสร้าง DataFrame ที่มีประเทศเป็นแถวและส่วนหัวของแถว จากนั้นใช้เมธอด 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)
# ที่นี่คุณต้องเขียนพาธที่ไฟล์ผลลัพธ์จะถูกจัดเก็บ
print(df)

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลดังนี้ −

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