みなさん、こんにちはケンケンです。
実務で良く使うCSV形式のファイルですが、CSVは正確には「Comma-Separated Values」といいます。
複数の値をコンマで区切ったテキスト形式のファイルのことです。
今やCSVはあらゆるデータフォーマットとして活用されていますね。
例えば経理システムからデータを取り込みたい場合に、一度CSV形式でデータを落としてExcelにインポートしたりします
もちろん、PythonでもCSVファイルを操作することができます。
今回は、Pythonを使ったCSVファイル操作の基本をお伝えします。
PythonでCSVファイルを読み込む基礎
CSVファイルを読み込んでみよう
まずは、読み込むためのCSVファイルを以下のように用意します。
▶seles_cost.csv
1 2 3 4 5 6 |
氏名,売上,経費 吉田義男,1000,500 鈴木京子,2000,1200 田中隆,3000,1800 江藤淳,2500,2000 三田紀子,1500,1600 |
次にCSVファイルを読み込んで使うために専用のライブラリpandasをインポートしましょう。
コマンドプロンプトを開いてインストールします。
以下のようにコマンドをたたいてください。
▶pandasをインストール(コマンドプロンプト)
1 |
<span style="font-size: 12pt;">pip install pandas</span> |
Windowsをお使いでインストールが実行されない場合はpipの前に「py -m」と入力してみましょう。
さて、インストールが完了したら、早速CSVファイルを読み込むコードを書いてみましょう。
▶CSVファイルを読み込む(readcsv.py)
1 2 3 4 5 |
<span style="font-size: 12pt;">import pandas as pd#① df = pd.read_csv('seles_cost.csv', encoding='utf-8', header=0)#② print(df)</span> |
①pandasモジュールを「pd」という別名でインポートしています。
みなさん、こんにちはケンケンです。 Pythonの基本をお送りしています。 前回は、for文と条件分岐の基本をお伝えしました。 前回の記事は以下をご覧ください。 [sitecard subtitl[…]
②read_csvメソッドでCSVファイル(seles_cost.csv)を読み込んでいます。
header=0はseles_cost.csvの1行目が見出し行なので、
それをPython側に明示的に知らせるために指定するものです。
コードを実行してみましょう。
たった3行のコードでCSVデータを読み込めました。
さらに、read_csvメソッドで読み込むとDataFrameオブジェクトが返されます。
このオブジェクトには様々な属性があるのですが、今回は「shape」と「values」をご紹介します。
▶DataFrameオブジェクトの属例一例
shape・・・読み込んだデータの行数と列数を取得
values・・・読み込んだデータに対し1行ずつリストとして取得
▶「shape」と「values」(readcsv.py)
1 2 3 |
<span style="font-size: 12pt;">print(df.shape) print(-----------------------------) print(df.values)</span> |
先ほどのコードに追記して実行してみましょう。
組み込み関数で計算してみよう
sum関数やmax関数などの基本的な関数を使ってファイル内の計算をすることも可能です。
▶簡単な関数を使ってみる(readcsv.py)
1 2 3 4 5 6 7 8 9 |
import pandas as pd df = pd.read_csv('seles_cost.csv', encoding='utf-8', header=0) sales = sum(df['売上']) print(f'売上合計:{sales}') print('-------------------------------------') max = max(df['経費']) print(f'経費最高額:{max}') |
上記のように記載し実行してみましょう。
簡単に計算することができました。
読み込んだデータを1行ずつ処理する方法
先ほどvalues属性を使ってリスト形式で一括でデータを取得できました。
みなさん、こんにちはケンケンです。 Pythonの基本事項をお伝えしています。 今回は、リストとタプルについてお話しします。 データをまとめておいておく大きな箱のようなものです。 これをうまく使い[…]
データを取得して加工したい時は1行ずつ確認しつつ作業したいときもありますね。
そんなときはfor文を使って1行ずつ処理することができます。
▶1行ずつデータを取得してみる(readcsv.py)
1 2 3 4 5 6 7 8 9 |
import pandas as pd df = pd.read_csv('seles_cost.csv', encoding='utf-8', header=0) sales = 0 for row in df.values:#① print(row)#② sales += row[2]#③ print(sales) |
①for文でdf.valuesで取得したデータの1行を変数rowに格納しています。
②取得したデータ行を表示しています。
③取得したデータの3列目の値を抜出して変数salesに格納し、以下2行目以降の値をsalesに追加します。
行と列の最初は0番目として数えるのでrow[2]は3列目を表しています。
売上2000以上だけ抜き出してみよう
if文と組み合わせることによって条件分けしてデータを抜き出すこともできます。
▶売上2000以上を抜き出す(readcsv.py)
1 2 3 4 5 6 7 8 9 |
import pandas as pd df = pd.read_csv('seles_cost.csv', encoding='utf-8', header=0) sales = {}#① for row in df.values: if row[1] >= 2000:#② sales[row[0]] = row[1] print('{}'.format(sales)) |
①「{}」を使って辞書を作ります。
辞書が分からない方は、以下の記事をご覧ください。
みなさん、こんにちはケンケンです。 Pythonの基本事項についてお伝えしています。 前回は、リストとタプルについてお話ししました。 前回の記事は以下から確認ください。 [sitecard sub[…]
②if文を使って売上(row[1])が2000以上の時に辞書に追加していく方法をとっています。
これを実行すると以下のようになります。
まとめ
今回は、CSV形式のデータを読み込む方法をご紹介しました。
pandasモジュールを使うと簡単に簡潔にコードが書けましたね。
読み込むだけでなく集計したり条件を指定することでデータを選別することも
数行のコードで表現することができました。便利ですね。
次回は、書き込む方法をご紹介する予定なので楽しみに!
それでは、また次回お会いしましょう。
みなさん、こんにちはケンケンです。 前回は、PythonでCSVファイルを読み込む方法をご紹介しました。 [sitecard subtitle=前回記事 url=https://expenblog.com/4[…]
おすすめ記事