はじめに
無料で使えるPythonのデータ解析ライブラリ「pandas」で、「CSVファイルを読み込む方法」と「読み込んだデータを取得(アクセス)する方法」を解説します。
取得方法は大きく分けて、「単一要素の取得」と「複数要素の取得」の二つがありますが、今回は基本編その1として、「単一要素の取得」を解説します。
- CSVデータの読み取り
- 単一要素の取得 ( at・iat・loc・iloc )
複数要素の取得については以下の記事ををご覧ください。
「Pythonやpandasはよく分からない」という方にも分かるよう、なるべく丁寧に解説しています。
pandasを使うと、CSVをかなり簡単に扱うことができるので、是非ご覧ください。
環境
この記事は以下の環境で作成しています。
環境 | バージョンなど |
Python | 3.9.6 |
pandas | 4.7.2 |
OS | Wiindows10 |
pandasのインストール
「pandasのインストールから知りたい」という方は、先に以下の記事をご覧ください。インストールには5分もかかりません。
CSVファイル
今回使用するCSVファイルは以下の通りです。 生データ・表計算の形式の、2つを掲載します。
※ 実行する場合は、下記のCSVデータをPythonファイルと同じフォルダに保存してください。
name,age,color,flag
taro,1,Red,true
jiro,11,Blue,true
saburo,21,Green,false
CSVファイルはスペースを入れずにそのまま使用してください。
基本編の解説のため、シンプルな(見づらい)データを、あえて使用しています。
実行結果
後述の「CSVファイルを読み込み」「単一要素を取得」するコードの実行結果です。
最初に出ているのが、読み込んだCSVすべての内容・下の4行が単一要素を4つの方法で取得した結果です。
全体コード
「CSVファイルを読み込み」「単一要素を取得」するコードです。pandasの「at」「iat」「col」「icol」プロパティを使用します。
具体的な引数の解説を、画像を使って「コードのポイント」で説明しています。詳細は後述の内容をご覧ください。
「at・iat・loc・iloc」は要素名称(番号)で、Seriesのデータへアクセスするプロパティです、[]で指定します。 「iあり」は番号、「iなし」は名称指定に使用します。
プロパティの説明や効能などはやや難しくなるので、ここでは「データへアクセスするための、特別な変数のようなもの」として見てください。
import pandas as pd
# csvファイルを読み込みます
df = pd.read_csv("data.csv")
# 読み込んだ全てのデータを表示します
print(df)
print("\n\n")
#
# at/iat/loc/iloc での個別要素の取得方法です。
#
# at 行番号と「列名称 」でデータを取得します")
print ( df.at[0,"name"] )
# iat 行番号と「列番号」でデータをします")
print ( df.iat[0,0] )
# loc 行番号と「列名称 」でデータを取得します
print ( df.loc[0,"name"] )
# iloc 行番号と「列番号」でデータを取得します
print ( df.iloc[0,0] )
コードのポイント
CSVファイルの読み取り
括弧内でCSVファイルのファイル名(とpath)を指定して、pandasの「DataFrame」という形式で読み取ります。CSVの読み込みはこの一行で完了です。
# csvファイルを読み込みます
df = pd.read_csv("data.csv")
「DataFrame」表示・編集・加工がしやすいpandasのデータの形式です。
詳細は長くなるので別記事にて解説します。
at / iat
単一の要素のみ取得可能なプロパティです。取得するデータの指定方法により以下の2つを使い分けます。
- 「名称」を指定して要素を取得「at」
- 「番号」を使用して要素を取得「iat」
下記のコードは2つとも、CSV中の「taro」を取得しています。
# at 行番号と「列名称 」でデータを取得します")
print ( df.at[0,"name"] )
# iat 行番号と「列番号」でデータをします")
print ( df.iat[0,0] )
要素の指定方法
指定方法は二つとも同じで、1つ目で「行の場所」、2つ目で「列の場所」を指定します。
「行」については、上から順に振られるので、行の番号「0」を指定します。
「列」については、「atの場合は列名称であるname」を、「iatの場合は列の番号0」を指定します。
loc / iloc
「単一要素」「複数要素」の両方が取得可能なプロパティです。 at / iat と同様に、取得するデータの指定方法により以下のように2つを使い分けます。
- 「名称」を指定して要素を取得「loc」
- 「番号」を使用して要素を取得「icol」
下記のコードも、CSV中の「taro」を取得しています。
# loc 行番号と「列名称 」でデータを取得します
print ( df.loc[0,"name"] )
# iloc 行番号と「列番号」でデータを取得します
print ( df.iloc[0,0] )
要素の指定方法
指定方法についても同様で、引数は1つ目で「行の場所」、2つ目で「列の場所」を指定します。
単一の要素を取得する場合は、at/iatと全く同じ引数の内容になります。
まとめ
無料で使えるPythonのデータ解析ライブラリ「pandas」で、CSVの読み込みと、単一要素の取得する以下のプロパティについて解説しました。
- 単一要素の取得「のみ」ができるプロパティ
- 「名称」を指定「at」
- 「番号」を指定「iat」
- 単一要素・複数要素の取得の「両方」ができるプロパティ
- 「名称」を指定「loc」
- 「番号」を指定「icol」
この記事では「単一要素の取得」に絞って解説しました。続きの「複数要素の取得」については、以下の記事をご覧ください。
お知らせ
3月号の『日経ソフトウェア』はPythonの特集。穴埋め式クイズで学ぶPython入門や、PythonでExcelを動かす方法などが特集されています。
pandasのインストールや環境構築を解説
以下の記事で、「Windows10にpandasをインストールする方法」や、「仮想環境上(venv)でPythonを実行する方法」も解説しています。興味のある方は合わせてご覧ください。
pandasのインストール方法
仮想環境上(venv)でPythonを実行する方法
質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。