とある地方大学生の生き方

学生。主にプログラミング関連の記事を書きます。

【Python】Pandas基礎アウトプット Part1

今回はPython3の標準ライブラリの1つであるPandasの学習をしたので、そのアウトプットの記事を書いていきたいと思います。

 

f:id:Reiji_Kusuzawa:20210526015610j:plain

 

 

Pandasには独自で様々な関数やメソッドが存在し、数表データの操作に便利なものが豊富に用意されていました。この記事ではPandasに含まれるメソッドをメインに説明していこうと思います。

 

学習に用いた動画です。

Pythonの便利ライブラリ「Pandas入門講座」合併版|Pandasの基本的なこと3時間で学べます【Python超入門コースの次におすすめの入門講座】 - YouTube

本動画のファイルの読み込み・書き出し〜CSVExcelファイルの読み込みと書き出し、データベースとの接続方法の項目までがこの記事の目安です。

 

 

Pandasの学習環境

私は学習のために、Anacondaに標準搭載されている、Jupyter labを用いました。

Jupyter labでは、インプット行に変数値を入力するだけで(print()関数を用いずに)アウトプット行に代入されている値を表示してくれるので、学習に便利です。

 

データフレームとシリーズについて

Pandasではデータフレームという概念が基盤で、データを整理、抽出、グラフ化していくようです。それに付随して類似したシリーズについても説明します。

 

データフレーム(DataFrame)とは、行(index)と列(column)で成り立った配列のこと。2次元の配列とも言える。

Pythonでは配列はリスト(list)で表される。

各行にはそれぞれindex名、各列にはそれぞれcolumn名を付けることができ、index名とcolumn名を指定するとそのデータを出力することが可能。

Excelの横にも縦にも広がった表のイメージ。

 

シリーズ(Series)とは、1次元の配列にそれぞれindex名がつけられたもの。

Pythonで配列を作ると、それぞれにインデックス番号が付く。

配列(list): [60, 56, 90, 24, 35]

インデックス番号: [0, 1, 2, 3, 4]

インデックス名は追加することが可能。

 

テストの点数(配列)のデータにそれぞれの生徒の学籍番号(インデックス番号)が付随しているイメージ。生徒の名前をそれぞれのインデックス名として追加することもできる。

 

Pandasライブラリをファイルに読み込む

 

最初の行に

Import pandas as pd 

と書き込む。

(as pd)と記述すると、pandasに含まれる関数を用いる時に、本来pandas.関数()であるところ、pd.関数()で用いることが可能になった。

以下、pandasに含まれるメソッドの前にはpd.を用いています。

 

CSVファイル・EXCELファイルを読み込む

pd.read_csv() & pd.read_excel()

read_csv()「CSVファイルの読み込み 」

read_excel()「Excelファイルの読み込み」

 

これらの関数を用いてそれぞれのファイルの読み込みが可能。引数には、ファイルパス・ファイル名、文字化けを防ぐためにエンコード方式名を記述します。

 

#変数dfに読み込んだcsvファイルを代入

df_csv = pd.read_csv('sample.csv', encoding='shift-jis')

 

type関数でデータ型を見てみると

type(df_csv)

pandas.core.frame.DataFrame
と、DataFrameがデータ型であることが読み取れる。

df_csv = pd.read_csv('sample.csv', encoding='shift-jis', index_col = [1])
のように、indexに指定する列を追加することも可能。
index番号は0から始まるので、1は2列目のデータになる。

ファイル読み込みの際の注意点

絶対パスで読み込む場合

× df = pd.read_csv('C:\Users\~\sample.csv', encoding='shift-jis')

ファイルパスをエクスプローラーからコピペしてファイルパスを表現した場合、jupyter labでは以下のような構文エラーが出ました。

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

「\」がエスケープシーケンスとして読み込まれていることが原因でした。
エスケープシーケンス( \ )は文字列中で改行「\n」、バックスラッシュ「\\」などを読み込ませる時に用いられる記号。

 

解決方法

○ pd.read_csv('C:\\Users\\~\\sample.csv', encoding='shift-jis')

絶対パスで読み込む場合は、エスケープシーケンスとして、バックスラッシュ「\」を2重で用いる事でファイルを読み込む事ができました。

バックスラッシュをスラッシュ「/」に変更しても正常に動作しました。

 

パスを書くのがめんどくさい場合は、Pandasで操作しているファイルがあるフォルダにCSVデータを保存するといいかもしれません。上記の動画でもおそらくそのようにしています。

 

データフレームを表示

pd.set_option('display.max_rows', 1000)

表示させるデータフレームの最大行数を右の数字に指定できる

pd.reset_option('display.max_rows')

表示する最大行数を元に戻す。

※rowsをcolumnsにすることで、列数を指定することも可能。

 

head()メソッド

データフレームの最初の5行を表示

引数に整数値を入れると、その数の長さの行数を表示できる。

tail()メソッド

データフレームの末尾の5行を表示

引数はhead()と同様。

describe()メソッド

データフレームの各列の平均値、標準偏差、最大値、最小値、四分位数等のデータが読み取れる。

round()メソッドを用いて、桁数を指定して四捨五入できる。

df_csv.describe().round(0) #小数点第1位を四捨五入?

 

 

CSVファイル・EXCELファイルを書き込む

to_csv()メソッド

データフレームをcsvファイルとして出力するメソッド。jupyter labで書いているコードのファイルと同じフォルダに出力されていました。

df_csv.to_csv('new_data.csv', encoding = 'shift-jis')

 

引数の最初に、パスを入力するとそのパス通りのフォルダに保存されるようです。

 

 

今回の記事は以上です。