Python での CSV ファイルの操作
あ CSV (カンマ区切り) ファイル はプレーン テキスト ファイルで、各行がデータ レコードを表し、各レコード内のフィールドがカンマで区切られています。そのシンプルさと読みやすさにより、スプレッドシートやデータベースによく使用されます。
以下は、Python で Python CSV ファイルを操作するときに実行するいくつかの操作です。
CSVファイルの読み込み
CSV ファイルからの読み取りは、リーダー オブジェクトを使用して行われます。 CSV ファイルは、ファイル オブジェクトを返す Python の組み込み open() 関数を使用してテキスト ファイルとして開かれます。この例では、最初に CSV ファイルを READ モードで開き、ファイル オブジェクトが csv.reader オブジェクトに変換され、その後の操作が行われます。コードと詳細な説明は以下に記載されています。
Python import csv filename = 'aapl.csv' # File name fields = [] # Column names rows = [] # Data rows with open ( filename 'r' ) as csvfile : csvreader = csv . reader ( csvfile ) # Reader object fields = next ( csvreader ) # Read header for row in csvreader : # Read rows rows . append ( row ) print ( 'Total no. of rows: %d ' % csvreader . line_num ) # Row count print ( 'Field names are: ' + ' ' . join ( fields )) print ( ' n First 5 rows are: n ' ) for row in rows [: 5 ]: for col in row : print ( ' %10s ' % col end = ' ' ) print ( ' n ' )
出力
上記の例ではCSVファイルを使用しています aapl.csv からダウンロードできます ここ 。
説明:
- オープン(...)あり コンテキスト マネージャーを使用して、CSV ファイルを読み取りモードで安全に開きます。
- csv.reader(csvファイル) ファイルを CSV リーダー オブジェクトに変換します。
- 次へ(csvreader) 最初の行を列ヘッダーとして抽出します。
- ループスルー csvreader 各行を (リストとして) 行に追加します。
- 合計行ヘッダーと最初の 5 つのデータ行を書式設定されたビューで印刷します。
csv を使用して CSV ファイルを辞書に読み取る
Python の csv モジュールと csv.DictReader クラスを使用して、CSV ファイルを辞書に読み取ることができます。以下に例を示します。
あるとします。 従業員.csv ファイルとその中のコンテンツは次のようになります。
名前部門誕生日_月
ジョン・スミスHR7月
アリス・ジョンソンIT10月
ボブ・ウィリアムズ金融1月
例: これは、各行を辞書 (キーとしてヘッダー) として読み取り、それを list に追加します。
Python import csv with open ( 'employees.csv' mode = 'r' ) as file : csv_reader = csv . DictReader ( file ) # Create DictReader data_list = [] # List to store dictionaries for row in csv_reader : data_list . append ( row ) for data in data_list : print ( data )
出力:
{'名前': 'ジョン・スミス' '部門': '人事' '誕生日_月': '7月'}
{'名前': 'アリス ジョンソン' '部門': 'IT' '誕生日_月': '10 月'}
{'名前': 'ボブ・ウィリアムズ' '部門': '財務' '誕生日_月': '1月'}
説明:
- オープン(...)あり コンテキストマネージャーを使用してファイルを開きます。
- csv.DictReader(ファイル) ヘッダーをキーとして使用して、各行を辞書として読み取ります。
- data_list.append(行) 各辞書をリストに格納します。
CSVファイルへの書き込み
CSV ファイルに書き込むには、まず CSV ファイルを書き込みモードで開きます。ファイル オブジェクトは csv.writer オブジェクトに変換され、さらなる操作が行われます。コードと詳細な説明は以下に記載されています。
Python import csv # Define header and data rows fields = [ 'Name' 'Branch' 'Year' 'CGPA' ] rows = [ [ 'Nikhil' 'COE' '2' '9.0' ] [ 'Sanchit' 'COE' '2' '9.1' ] [ 'Aditya' 'IT' '2' '9.3' ] [ 'Sagar' 'SE' '1' '9.5' ] [ 'Prateek' 'MCE' '3' '7.8' ] [ 'Sahil' 'EP' '2' '9.1' ] ] filename = 'university_records.csv' with open ( filename 'w' ) as csvfile : csvwriter = csv . writer ( csvfile ) # Create writer object csvwriter . writerow ( fields ) # Write header csvwriter . writerows ( rows ) # Write multiple rows
説明:
- フィールド 列ヘッダーを定義し、行にはデータがリストのリストとして含まれます。
- と オープン(... 'w') コンテキストマネージャーを使用してファイルを書き込みモードで開きます。
- csv.writer(csvファイル) CSV に書き込むためのライター オブジェクトを作成します。
- writerow(フィールド) ヘッダー行をファイルに書き込みます。
- writerows(行) すべてのデータ行を一度に CSV に書き込みます。
辞書をCSVファイルに書き込む
辞書を CSV ファイルに書き込むには、ファイル オブジェクト (csvfile) が DictWriter オブジェクトに変換されます。説明とコードを含む詳細な例を以下に示します。
Python # importing the csv module import csv # my data rows as dictionary objects mydict = [{ 'branch' : 'COE' 'cgpa' : '9.0' 'name' : 'Nikhil' 'year' : '2' } { 'branch' : 'COE' 'cgpa' : '9.1' 'name' : 'Sanchit' 'year' : '2' } { 'branch' : 'IT' 'cgpa' : '9.3' 'name' : 'Aditya' 'year' : '2' } { 'branch' : 'SE' 'cgpa' : '9.5' 'name' : 'Sagar' 'year' : '1' } { 'branch' : 'MCE' 'cgpa' : '7.8' 'name' : 'Prateek' 'year' : '3' } { 'branch' : 'EP' 'cgpa' : '9.1' 'name' : 'Sahil' 'year' : '2' }] # field names fields = [ 'name' 'branch' 'year' 'cgpa' ] # name of csv file filename = 'university_records.csv' # writing to csv file with open ( filename 'w' ) as csvfile : # creating a csv dict writer object writer = csv . DictWriter ( csvfile fieldnames = fields ) # writing headers (field names) writer . writeheader () # writing data rows writer . writerows ( mydict )
出力
csvファイル CSV ファイルがプレーン テキストで次のようになっていると考えてください。
大学の成績 説明:
- オープン(...)あり コンテキストマネージャーを使用してファイルを安全に開きます。
- csv.DictWriter(... ) 辞書キーを CSV 列にマップします。
- ライトヘッダー() 列ヘッダーを書き込みます。
- writerows(mydict) すべての辞書を CSV 行として書き込みます。
Pandas を使用した CSV ファイルの読み取り
読むことができます Python CSV Panda でファイルを使用する pandas.read_csv() 関数。以下に例を示します。
従業員.csv ファイルがあり、その中のコンテンツは次のようになるとします。
名前部門誕生日_月
ジョン・スミスHR7月
アリス・ジョンソンIT10月
ボブ・ウィリアムズ金融1月
この例では、pd.read_csv() は CSV ファイルを Pandas DataFrame に読み取ります。結果として得られる DataFrame は、さまざまなデータ操作や分析タスクに使用できます。
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
出力:
名前 所属 誕生日_月
0 ジョン・スミス人事 7 月
1 アリス・ジョンソン IT 10月
2 ボブ・ウィリアムズ ファイナンス 1月
特定の列のフィルター データにアクセスし、pandas DataFrame 機能を使用してさまざまな操作を実行できます。たとえば、「name」列にアクセスしたい場合は、df['name'] を使用できます。
Python # Access the 'name' column names = df [ 'name' ] print ( names )
出力 :
0 ジョン・スミス
1 アリス・ジョンソン
2 ボブ・ウィリアムズ
名前: 名前 dtype: オブジェクト
Pandas を使用した CSV ファイルの書き込み
Pandas を使用して CSV ファイルを作成できます。を使用して行うことができます pd.DataFrame() 関数。この例では、 パンダ library は、辞書のリスト (mydict) を表形式のデータを表す DataFrame に変換するために使用されます。次に、to_csv メソッドを使用して DataFrame が「output.csv」という名前の Python CSV ファイルに書き込まれ、さらなる分析や共有のために構造化された読み取り可能なデータ ファイルが作成されます。
Python import pandas as pd mydict = [ { 'branch' : 'COE' 'cgpa' : '9.0' 'name' : 'Nikhil' 'year' : '2' } { 'branch' : 'COE' 'cgpa' : '9.1' 'name' : 'Sanchit' 'year' : '2' } { 'branch' : 'IT' 'cgpa' : '9.3' 'name' : 'Aditya' 'year' : '2' } { 'branch' : 'SE' 'cgpa' : '9.5' 'name' : 'Sagar' 'year' : '1' } { 'branch' : 'MCE' 'cgpa' : '7.8' 'name' : 'Prateek' 'year' : '3' } { 'branch' : 'EP' 'cgpa' : '9.1' 'name' : 'Sahil' 'year' : '2' } ] # Create a DataFrame from the list of dictionaries df = pd . DataFrame ( mydict ) # Write the DataFrame to a CSV file df . to_csv ( 'output.csv' index = False )
出力CSVファイル:
ブランチcgpaname年
COE9.0ニキル2
COE9.1サンチット2
IT9.3アディティア2
SE9.5サーガル1
MCE7.8プラテック3
EP9.1サヒル2
メールをCSVファイルに保存する
まず csv モジュールをインポートし、それを使用して名前と電子メールをカンマ区切り値として保存します。 open() 関数を使用して CSV ファイルを作成し、名前と電子メールの個別の列を持つライター オブジェクトを使用して各行を書き込みます。
Python # importing the csv module import csv # field names fields = [ 'Name' 'Email' ] # data rows of csv file rows = [ [ 'Nikhil' '[email protected]' ] [ 'Sanchit' '[email protected]' ] [ 'Aditya' '[email protected]' ] [ 'Sagar' '[email protected]' ] [ 'Prateek' '[email protected]' ] [ 'Sahil' '[email protected]' ]] # name of csv file filename = 'email_records.csv' # writing to csv file with open ( filename 'w' ) as csvfile : # creating a csv writer object csvwriter = csv . writer ( csvfile ) # writing the fields csvwriter . writerow ( fields ) # writing the data rows csvwriter . writerows ( rows )
出力:
CSV形式のメール クイズの作成