Python Pandas チュートリアル: DataFrame、日付範囲、Pandas の使用

パンダパイソンとは何ですか?

パンダ は、Python でデータ操作と分析を実行できるオープンソース ライブラリです。 Pandas Python ライブラリは、数値テーブルと時系列のデータ操作とデータ操作を提供します。 Pandas は、データを作成、操作、およびラングリングする簡単な方法を提供します。 NumPy 上に構築されているため、動作するには NumPy が必要です。

なぜパンダを使うのか?

データ サイエンティストは次の目的で Python の Pandas を利用しますwing 利点:

  • 欠落データを簡単に処理
  • これは、使用して XNUMX次元データ構造の系列 > 多次元データ構造の DataFrame
  • データをスライスする効率的な方法を提供します
  • データをマージ、連結、または再形成する柔軟な方法を提供します。
  • 使用できる強力な時系列ツールが含まれています

一言で言えば、Pandas は次のような用途に役立つライブラリです。 データ分析。 データの操作と分析を実行するために使用できます。 Pandas は、強力で使いやすいデータ構造と、これらの構造に対して操作を迅速に実行する手段を提供します。

パンダをインストールするにはどうすればよいですか?

この Python Pandas チュートリアルでは、Python に Pandas をインストールする方法を学びます。

Pandas ライブラリをインストールするには、チュートリアルを参照してください。 TensorFlow のインストール方法。 パンダはデフォルトでインストールされます。 リモートの場合、パンダはインストールされていません -

以下を使用して Pandas をインストールできます。

  • アナコンダ: conda install -c anaconda pandas
  • In Jupyter ノートブック:
import sys
!conda install --yes --prefix {sys.prefix} pandas

パンダのデータフレームとは何ですか?

パンダDataFrame は、異なる列タイプを持つラベル付きデータ構造を持つ 2,3,4 次元配列です。 DataFrame は、情報を格納する行と情報に名前を付ける列を備えた表形式でデータを格納する標準的な方法です。 たとえば、価格を列の名前にし、XNUMX、XNUMX、XNUMX を価格値にすることができます。

Data Frame は統計学者やその他のデータ専門家によく知られています。

以下は Pandas データ フレームの図です。

パンダDataFrame

シリーズとは何ですか?

シリーズは XNUMX 次元のデータ構造です。 整数、浮動小数点、文字列などの任意のデータ構造を持つことができます。 計算を実行したり、XNUMX 次元配列を返したりする場合に便利です。 定義上、系列には複数の列を含めることはできません。 後者の場合は、データ フレーム構造を使用してください。

Python Pandas シリーズには次のものがありますwing パラメータ:

  • データ: リスト、辞書、またはスカラー値にすることができます
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

インデックスを使用してインデックスを追加できます。 行に名前を付けると便利です。 長さは列のサイズと同じである必要があります

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

以下では、XNUMX 行目の欠損値を持つ Pandas シリーズを作成します。 値が欠落していることに注意してください Python 「NaN」と表記されます。 numpy を使用して欠損値 np.nan を人為的に作成できます

pd.Series([1,2,np.nan])

出力

0    1.0
1    2.0
2    NaN
dtype: float64

パンダのデータフレームを作成する

この Pandas DataFrame チュートリアルでは、Python Pandas データフレームを作成する方法を学びます。

pd.Data Frame() を使用して、numpy 配列を pandas データ フレームに変換できます。 その逆も可能です。 pandas データ フレームを配列に変換するには、np.array() を使用できます。

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

辞書を使用して Pandas データフレームを作成することもできます。

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
ご年齢 お名前
0 30 John Redfern
1 40 Smith

パンダの範囲データ

Pandas には、日付の範囲を作成するための便利な API があります。 Python Pandas の例で学びましょう:

pd.data_range(日付,期間,頻度):

  • 最初のパラメータは開始日です
  • XNUMX 番目のパラメータは期間の数です (終了日が指定されている場合はオプション)
  • 最後のパラメータは頻度です: 日: 'D'、月: 'M'、年: 'Y'。
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

出力

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

出力

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

データの検査

以下の Pandas の例に示すように、head() または tail() の前にパンダのデータ フレームの名前を付けて、データセットの先頭または末尾を確認できます。

ステップ1) でランダムシーケンスを作成します 貧弱。 シーケンスには 4 列と 6 行があります

random = np.random.randn(6,4)

ステップ2) 次に、pandas を使用してデータ フレームを作成します。

データ フレームのインデックスとして date_m を使用します。 これは、各行に日付に対応する「名前」またはインデックスが与えられることを意味します。

最後に、引数 columns を使用して 4 つの列に名前を付けます。

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

ステップ3) ヘッド機能を使う

df.head(3)
A B C D
2030-01-31 1.139433 1.318510 -0.181334 1.615822
2030-02-28 -0.081995 -0.063582 0.857751 -0.527374
2030-03-31 -0.519179 0.080984 -1.454334 1.314947

ステップ4) tail関数を使用する

df.tail(3)
A B C D
2030-04-30 -0.685448 -0.011736 0.622172 0.104993
2030-05-31 -0.935888 -0.731787 -0.558729 0.768774
2030-06-30 1.096981 0.949180 -0.196901 -0.471556

ステップ 5) データに関する手がかりを得る優れた方法は、describe() を使用することです。 データセットの数、平均、標準、最小、最大、パーセンタイルを提供します。

df.describe()
A B C D
カウント 6.000000 6.000000 6.000000 6.000000
意味する 0.002317 0.256928 -0.151896 0.467601
STD 0.908145 0.746939 0.834664 0.908910
-0.935888 -0.731787 -1.454334 -0.527374
25% -0.643880 -0.050621 -0.468272 -0.327419
50% -0.300587 0.034624 -0.189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
マックス 1.139433 1.318510 0.857751 1.615822

スライスデータ

この Python Pandas チュートリアルの最後のポイントは、pandas データ フレームをスライスする方法についてです。

以下の Pandas の例に示すように、列名を使用して特定の列のデータを抽出できます。

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

複数の列を選択するには、括弧 [[..,...]] を XNUMX 回使用する必要があります。

最初の括弧のペアは列を選択することを意味し、XNUMX 番目の括弧のペアはどの列を返したいかを示します。

df[['A', 'B']].
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

次のコマンドを使用して行をスライスできます。

以下のコードは最初の XNUMX 行を返します。

### using a slice for row
df[0:3]
A B C D
2030-01-31 -0.168655 0.587590 0.572301 -0.031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0.940617 0.227255 -0.341532

loc 関数は、名前で列を選択するために使用されます。 通常どおり、カンマの前の値は行を表し、カンマの後の値は列を表します。 複数の列を選択するには、括弧を使用する必要があります。

## Multi col
df.loc[:,['A','B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Pandas で複数の行と列を選択する別の方法があります。 iloc[]を使用できます。 このメソッドは、列名の代わりにインデックスを使用します。 以下のコードは、上記と同じデータ フレームを返します。

df.iloc[:, :2]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

列を削除する

pd.drop() を使用して列を削除できます。

df.drop(columns=['A', 'C'])
B D
2030-01-31 0.587590 -0.031827
2030-02-28 0.998266 0.475975
2030-03-31 -0.940617 -0.341532
2030-04-30 0.507350 -0.296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0.594772

連結

Pandas では XNUMX つの DataFrame を連結できます。 pd.concat() を使用できます

まず最初に、XNUMX つの DataFrame を作成する必要があります。 ここまでは順調です。データフレームの作成についてはすでに慣れていますね

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

最後に、XNUMX つの DataFrame を連結します。

df_concat = pd.concat([df1,df2]) 
df_concat
ご年齢
0 25 John Redfern
1 30 Smith
2 50 Paul Cairns
3 26 アダム
4 11 Smith

Drop_duplicates

データセットに重複情報が含まれる可能性がある場合、`drop_duplicates` を使用すると重複行を簡単に除外できます。 `df_concat` には重複した観測があり、`Smith` が `name` 列に XNUMX 回出現していることがわかります。

df_concat.drop_duplicates('name')
ご年齢
0 25 John Redfern
1 30 Smith
2 50 Paul Cairns
3 26 アダム

値の並べ替え

sort_values を使用して値を並べ替えることができます

df_concat.sort_values('Age')
ご年齢
4 11 Smith
0 25 John Redfern
3 26 アダム
1 30 Smith
2 50 Paul Cairns

名前の変更: インデックスの変更

rename を使用して、Pandas の列の名前を変更できます。 最初の値は現在の列名で、XNUMX 番目の値は新しい列名です。

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
年齢_ppl
0 25 John Redfern
1 30 Smith
2 50 Paul Cairns
3 26 アダム
4 11 Smith

まとめ

以下は、Pandas を使用したデータ サイエンスの最も有用な方法の概要です。

データをインポートする read_csv
シリーズを作成する シリーズ
データフレームの作成 データフレーム
日付範囲の作成 日付範囲
リターンヘッド
リターンテール tail
説明する 説明する
名前を使用してスライスする データ名['列名']
行を使用してスライスする データ名[0:5]