「pandas」というライブラリを使って「表データを読み書きする」
まずは、外部ライブラリである「pandas」をインストールしましょう。
インストールの方法
Windowsにインストールするときは、コマンドプロンプトを使用します。 「pip install pandas」このように入力します。
macOSにインストールするときは、ターミナルを使用します。 「pip3 install pandas」このように入力します。
ちなみに「pandas(パンダス)」は表データを読み込んで、データの追加、削除、抽出、集計、書き出しなどを行える便利な外部ライブラリです。
準備のため今回は「pandas」というフォルダを作り、あらかじめ表データを作成しました。
解説
import pandas as pd | pandasライブラリをimportします。省略してpdとします。 |
df = pd.read_csv(“test.csv”) | pdから.read_csv(“ファイル名”)という命令をして読み込みます。それを変数dfに代入します。 |
print(df) | 表示させます。 |
表データをファイルに保存するときは、csvファイルがよく使われます。csvファイルとは、「カンマで区切られたデータがたくさん入ったテキストファイル」のことです。
ここで使っているdfとは「DataFrame」のことで、これは「表データをpandasライブラリで使えるようにしたデータ」のことで、ここでは略してdfとの変数にしています。
テストサンプルを読み込みできました。
次は、読み込んだデータについて件数や項目名、縦の番号がふってあるインデックスを抽出してみましょう。
解説
import pandas as pd | pandasライブラリをimportします。省略してpdとします。 |
df = pd.read_csv(“test.csv”) | pdから.read_csv(“ファイル名”)という命令をして読み込みます。それを変数dfに代入します。 |
print(“データの件数 =”,len(df)) | lenで件数を表示させます。 |
print(“項目名 =”,df.columns.values) | 項目名をcolumns.valuesで表示させます。 |
print(“インデックス=”,df.index.values) | インデックスをindex.valuesで表示させます。 |
指示通り取り出すことができましたね。
続いて「列データ」を抽出して表示してみましょう。
解説
import pandas as pd | pandasライブラリをimportします。省略してpdとします。 |
df = pd.read_csv(“test.csv”) | pdから.read_csv(“ファイル名”)という命令をして読み込みます。それを変数dfに代入します。 |
print(“英語の列データー\n”,df[“英語”]) | バックスラッシュ(\)nで改行し、df[“列名”]と取り出したいものを指定します。 |
print(“理科と社会の列データ\n”,df[[“理科”,”社会”]]) | 複数の列の場合は[[“列名1”,”列名2”]]と指定します。 |
指定した列データが取り出せました。
続いて、「行データ」を抽出して表示させてみましょう。
解説
import pandas as pd | pandasライブラリをimportします。省略してpdとします。 |
df = pd.read_csv(“test.csv”) | pdから.read_csv(“ファイル名”)という命令をして読み込みます。それを変数dfに代入します。 |
print(“C子のデータ\n”,df.loc[2]) | バックスラッシュ(\)nで改行し、df.loc[行番号]と取り出したいものを指定します。 |
print(“C子とE美のデータ\n”,df.loc[[2,4]]) | 複数の列の場合はdf.loc[[行番号1,行番号2]]と指定します。 |
print(“F菜の社会データ\n”,df.loc[5][“社会”]) | 1つの要素データを指定する場合は、df.loc[行番号1],[“列名”]と指定します。 |
指定した通り取り出せました。
*尚、ここではバージョン「Python 3.10.1」を使用しています。
この本から引用、参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。