CSV ফাইল বা কমা-সেপারেটেড ভ্যালু ফাইল ডেটা সংরক্ষণ ও প্ল্যাটফর্ম জুড়ে শেয়ার করার জন্য সবচেয়ে ব্যাপকভাবে ব্যবহৃত ফ্ল্যাট ফাইল। কলামগুলো কমা দিয়ে সেপারেট থাকে এবং অপশনাল হেডার রোও থাকে যেটি প্রতিটি কলামের নাম নির্দেশ করে। পাইথন অনেক মডিউল ব্যবহার করে CSV ফাইল পড়তে পারে। এই আর্টিকেলে আমরা দেখব কিভাবে পাইথনের CSV লাইব্রেরি ব্যবহার করে CSV ফাইল পড়া ও লেখা যায়। আমরা পান্ডাস লাইব্রেরিও শুধু 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'] ........... ...........
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 ফাইল তৈরি করতে আমরা পাইথন লিস্ট ব্যবহার করি। আমরা একটি ডেটাসেট ডিক্লেয়ার করি যেখানে প্রতিটি রো একটি লিস্ট এবং সব রো একটি বড় সিঙ্গেল লিস্টে সাবলিস্ট হিসেবে থাকে। আমরা আরেকটি ডেটাসেট তৈরি করি যা শুধু হেডার রোকে রিপ্রেজেন্ট করে। তারপর 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