Python での CSV ファイルの操作

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  '  )   

出力

Python での CSV ファイルの操作

上記の例では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  )   

出力

Python での CSV ファイルの操作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形式のメールCSV形式のメール クイズの作成