Python Pandas チュートリアル: データフレーム、日付範囲、Pandas の使用
パンダとは Python?
パンダ は、データ操作と分析を実行できるオープンソースライブラリです。 Pythonパンダ Python ライブラリは、数値テーブルと時系列のデータ操作とデータ処理を提供します。Pandas は、データを簡単に作成、操作、整理する方法を提供します。これは NumPy 上に構築されているため、操作には NumPy が必要です。
なぜパンダを使うのか?
データサイエンティストはPandasを次のように活用しています Python 次のような利点があります。
- 欠落データを簡単に処理
- これは、使用して XNUMX次元データ構造の系列 の三脚と 多次元データ構造の DataFrame
- データをスライスする効率的な方法を提供します
- データをマージ、連結、または再形成する柔軟な方法を提供します。
- 使用できる強力な時系列ツールが含まれています
一言で言えば、Pandas は次のような用途に役立つライブラリです。 データ分析データの操作と分析を実行するために使用できます。Pandas は、強力で使いやすいデータ構造と、これらの構造に対して操作をすばやく実行する手段を提供します。
パンダをインストールするにはどうすればよいですか?
今これで Python Pandasチュートリアルでは、Pandasのインストール方法を学びます Python.
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 データ フレームの図です。
シリーズとは何ですか?
シリーズは XNUMX 次元のデータ構造です。 整数、浮動小数点、文字列などの任意のデータ構造を持つことができます。 計算を実行したり、XNUMX 次元配列を返したりする場合に便利です。 定義上、系列には複数の列を含めることはできません。 後者の場合は、データ フレーム構造を使用してください。
Python Pandas シリーズには次のパラメーターがあります。
- データ: リスト、辞書、またはスカラー値にすることができます
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) でランダムシーケンスを作成します numpy。 シーケンスには 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] |

