No Result
View All Result
WebHack
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
No Result
View All Result
WebHack
No Result
View All Result
Home プログラミング

【Python初心者向け】Pandasの使い方を徹底解説!

fukii by fukii
2020年3月18日
in プログラミング
0
0
SHARES
33
VIEWS

PythonのPandas(パンダスと読みます)とは「CSVなどのデータを簡単に扱えるようにするために開発された」Pythonのライブラリです。

Pandasは1次元配列も扱えますが、基本的にはExcelのような2次元のデータを扱うことに長けています。

ここでは

  • PythonのPandasは何ができるの?
  • PythonのPandasの使い方は?
  • PythonのSeriesやDataFrameって何?

といった疑問に答えつつ、Pandasについて解説します。

目次

  • 1 PythonのPandasをインストールする(Macの場合)
  • 2 PythonのPandasの使い方
    • 2.1 CSVからデータを読み込む
    • 2.2 読み込んだデータの情報を取得
      • 2.2.1 データの行数・列数を取得する
      • 2.2.2 先頭から指定した行数を取得する
      • 2.2.3 末尾から指定した行数を取得する
  • 3 DataFrameの使い方
    • 3.1 DataFrameの作り方
    • 3.2 データを追加・変更する
    • 3.3 データの参照
    • 3.4 データを削除する
  • 4 DataFrameをCSVに出力する

PythonのPandasをインストールする(Macの場合)

Pandasは標準ライブラリではないのでインストールしてから使う必要があります。

いくつか方法はありますが、ここではpipを使ってPandasをインストールします。

ターミナルで次のコマンドを実行してください。

$ pip install pandas

インストールが開始されるので少し待ちましょう。インストールが完了したら次のコマンドを入力してインストールされていることを確認します。

$ pip list installed | grep pandas

すでにpipでインストール済みのライブラリからpandasを検索して表示しています。

PandasとPandasのバージョンが表示されればOKです。

PythonのPandasの使い方

では実際にPandasを使ってみましょう。ここではCSVからデータを取得し、そこから行や列のデータを取得したり、データを追加・更新・削除したり、再度CSVに書き込んだりといったことを実践していきます。

CSVからデータを読み込む

まずはCSVからデータを読み込みます。今回は次のようなデータが入っているCSVファイルを読み込む想定です。

                            
                          

こういったテストデータは擬似データ作成ができるサイトを使うと便利です。今回のデータはこちらのサイト様を活用させていただきました。

https://hogehoge.tk/personal/

このCSVファイルのデータをpandasで読み込むにはcsv_read()を使います。

                            import pandas as pdcsv_data = pd.read_csv("input.csv",index_col = 0)print(csv_data)print(type(csv_data))
                          
                                氏名  性別  携帯電話       メールアドレス連番0 平沢 亘輝   窪田 敏彦   福田 紀男  voj= 奥山 芳雄   寺崎 萌子  
                          

Pandasのread_csv()を使うことで、たった1行でCSVデータを取り込むことができました。

read_csv()の1つ目の引数はファイルのパスです。環境やCSVの配置場所によって変わってくるので、ご自身の状況に合ったパスを指定してください。ここではPythonの実行ファイルと同じディレクトリに配置したinput.csvを読み込んでいます。

2つの引数はどの列をインデックスにするかを指定しています。今回はちょうどCSV内に連番のデータがあったので、連番の列をインデックスに指定しています。

取得したCSVデータはそのままprint()で出力して中身を確認できます。CSVデータと同じデータを変数に格納できているのがわかります。

また、取得したデータは「DataFrame」というクラスであることがわかります。DataFrameとはPandasで2次元配列を扱うために用意されたクラスです。加えて1次元のデータを扱うには「Series」というクラスが用意されています(詳しくは後述)。

読み込んだデータの情報を取得

いくつかの方向から、読み込んだデータの情報を取得してみましょう。なお、ここで紹介するメソッドは全てDataFrameクラスで定義されているメソッドです。

データの行数・列数を取得する

データの行数・列数を取得したい場合はshapeを使います(メンバなのでカッコはいりません)。

                            import pandas as pddata_frame = pd.read_csv("input.csv", index_col = 0)print(data_frame.shape)
                          
                            (5, 4)
                          

先頭から指定した行数を取得する

先頭から指定した行数だけデータを取得したい場合はhead()を使います。マイナス値を指定することもできます。

                            import pandas as pddata_frame = pd.read_csv("input.csv", index_col = 0) #5行のDataFrameprint(data_frame.head(2))print(data_frame.head(-2))
                          
                                氏名  性別  携帯電話      メールアドレス連番0 平沢 亘輝   窪田 敏彦      氏名  性別  携帯電話      メールアドレス連番0 平沢 亘輝   窪田 敏彦   福田 紀男  voj=
                          

末尾から指定した行数を取得する

末尾からデータを取得したい場合はtail()を使います。こちらもマイナス値を指定できます。

                            import pandas as pddata_frame = pd.read_csv("input.csv", index_col = 0) #5行のDataFrameprint(data_frame.tail(2))print(data_frame.tail(-2))
                          
                                氏名  性別  携帯電話      メールアドレス連番3 奥山 芳雄   寺崎 萌子      氏名  性別  携帯電話      メールアドレス連番2 福田 紀男  voj= 奥山 芳雄   寺崎 萌子  
                          

DataFrameの使い方

read_csv()で取得したcsvはDataFrameというクラスのオブジェクトです。

DataFrameは2次元の配列で、1次元配列のSeriesというオブジェクトで構成されています。

ここではDataFrameの作成方法と、データの追加・参照・変更・削除の方法を見てみましょう。

DataFrameの作り方

DataFrameはcsvやExcelから作ることもできますが、通常のリストやNumPyのndarrayから作ることもできます。今回はndarrayからDaraFrameを作ります。

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d.columns = ["A", "B", "C"]d.index = ["α", "β", "γ"]print(d)
                          
                               A  B  Cα 10 20 30β 40 50 60γ 70 80 90
                          

pd.DataFrame()にndarrayを渡してDataFrameを作成しました。

columnsとindexにはそれぞれ横と縦のデータの名称を設定できます。

データを追加・変更する

DataFrameにデータを追加・変更するには同じくリストを使います。

列も行も追加・変更可能で、列はインデックス番号、行はインデックス番号の他にlocというメンバを参照します。

データを追加したい場合は最大のインデックス番号+1の数値を、変更したい場合は変更する行または列のインデックス番号を指定します。

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d2 = ["11", "22", "33"]d[3] = d2d.columns = ["A", "B", "C", "D"] #列を追加するので1つ増やすd.index = ["α", "β", "γ"]print(d)
                          
                               A  B  C  Dα 10 20 30 11β 40 50 60 22γ 
                          

上記の例では列を追加しています。列を追加する際はcolumnsに要素を一つ追加する必要があります(追加しないとエラーになるので注意)

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d2 = ["11", "22", "33"]d.loc[3] = d2 #locを参照d.columns = ["A", "B", "C"]d.index = ["α", "β", "γ", "δ"] #行を追加する場合はこっちを増やすprint(d)
                          
                               A  B  Cα 10 20 30β 40 50 60γ 70 80 90δ 11 22 33
                          

こちらは行を追加するパターンです。locメンバを使う以外は列を追加する場合とほとんど同じです。

データの参照

データを参照する場合は、先ほど行を追加する際に使ったlocを使います。

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d.columns = ["A", "B", "C"]print(d.loc[1, "B"])
                          
                            50
                          

loc[行のインデックス, 列のインデックス]で指定することで値を取得しています。今回は行のindexを指定していないので、デフォルトで割り当てられるインデックス番号を指定しています。

また、locはスライスに対応しています。少し複雑になりますが、次のように範囲を指定します。

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d.columns = ["A", "B", "C"]print(d.loc[1:2, "B":"C"]) #1〜2行目,B〜C列目のデータを取得
                          
                               B  C1 
                          

1:2で1行目〜2行目、”B”:”C”でB〜C列を指定しています。

スライスについてはこちらも参照ください。

【Python初心者向け】リスト(list)の使い方を徹底解説!〜リストのあれこれ〜

データを削除する

DataFrameのデータを削除する場合はdrop()を使います。drop()した結果を受け取る必要があるので注意しましょう。下の例は指定した行を削除しています。

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d.columns = ["A", "B", "C"]d.index = ["α", "β", "γ"]d = d.drop("α", axis=0)print(d)
                          
                               A  B  Cβ 40 50 60γ 70 80 90
                          

1つ目の引数に行のインデックス、2つ目の引数は行と列どちらを削除するかを0, 1で指定します。

axis=1を指定することで列を削除することもできます。

                            import numpy as npimport pandas as pdnp_list = np.array(list(range(10, 100, 10))).reshape(3, 3)d = pd.DataFrame(np_list)d.columns = ["A", "B", "C"]d.index = ["α", "β", "γ"]d = d.drop("B", axis=1)print(d)
                          
                               A  Cα 10 30β 40 60γ 70 90
                          

DataFrameをCSVに出力する

Pandasを使えばto_csv()で非常に簡単にCSV出力できます。

read_csv()で読み込んだデータを加工して、再度別のcsvに出力してみましょう。

                            
                          
                            
                          

to_csv()にDataFrameを渡してCSVデータを出力しています。

メールアドレスの削除や6行目の追加などの加工が反映されたCSVが出力されているのがわかります。

Tags: csv DataFrame input NumPy output Pandas pip Python Series スライス プログラミング プログラミング言語
Previous Post

【デスクワーカーの悩み解決】Nulaxyのノートパソコンスタンドの使用感をレビュー

Next Post

【臨場感たっぷりの映像を楽しめる】UrgodのVRゴーグルの使用感をレビュー

fukii

fukii

Next Post
【臨場感たっぷりの映像を楽しめる】UrgodのVRゴーグルの使用感をレビュー

【臨場感たっぷりの映像を楽しめる】UrgodのVRゴーグルの使用感をレビュー

コメントを残す コメントをキャンセル

人気記事

  • 【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    0 shares
  • [中学生・高校生向け]どんな教室を選べばいい?おすすめのプログラミング教室を徹底解説!

    0 shares
  • 【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    0 shares
  • 【N高校】プログラミングコースって実際どうなの?

    0 shares
  • スマホだけでじゃない!5Gで実現できること&変わる生活

    0 shares

カテゴリー

  • IoT/ガジェット (171)
  • Webサービス (71)
  • お知らせ (4)
  • プログラミング (40)
  • モバイルアプリ (41)
  • 自動運転 (2)
  • 通信技術 (18)
  • 電気自動車 (3)

タグ

5G AI Android ANKER Apple Bluetooth Chrome Chrome拡張機能 DJI ELECOM GoodNotes5 Google GoPro IoT iPad iPad OS iPad Pro iPhone Java Javascript kickstarter list NumPy Python Twitter Wi-Fi Wi-Fiルーター YouTube アクションカメラ アプリ オススメ キックスターター クラウドファンディング グーグル スマートフォン ディープラーニング プログラミング プログラミング言語 モバイルバッテリー リスト リモートワーク リモート会議 ワイヤレス充電器 新型コロナウイルス 防災アイテム

WebHackはインターネットサービスやガジェットなどITトレンド情報をお伝えしていきます。

Category

  • IoT/ガジェット
  • Webサービス
  • お知らせ
  • プログラミング
  • モバイルアプリ
  • 自動運転
  • 通信技術
  • 電気自動車

Follow Us

  • プライバシーポリシー
  • お問い合わせ

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .

No Result
View All Result
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .