Python-pandas-quick-guide
Pythonパンダ-はじめに
Pandasは、強力なデータ構造を使用して高性能のデータ操作および分析ツールを提供するオープンソースのPythonライブラリです。 パンダの名前は、多次元データからの計量経済学というパネルデータという言葉に由来しています。
2008年、開発者のWes McKinneyは、データ分析のための高性能で柔軟なツールが必要なときにパンダの開発を開始しました。
パンダ以前は、Pythonはデータの改ざんと準備に主に使用されていました。 データ分析にはほとんど貢献していません。 パンダはこの問題を解決しました。 Pandasを使用すると、データの出所に関係なく、データの処理と分析の5つの典型的なステップ(ロード、準備、操作、モデリング、分析)を実行できます。
Python with Pandasは、金融、経済、統計、分析などの学術および商業分野を含む幅広い分野で使用されています。
パンダの主な機能
- デフォルトおよびカスタマイズされたインデックス付けを備えた高速で効率的なDataFrameオブジェクト。
- さまざまなファイル形式からインメモリデータオブジェクトにデータをロードするためのツール。
- データのアライメントと欠落データの統合処理。
- 日付セットの形状変更とピボット。
- 大きなデータセットのラベルベースのスライス、インデックス作成、サブセット化。
- データ構造から列を削除または挿入できます。
- 集計および変換のためにデータごとにグループ化します。
- データの高性能なマージと結合。
- 時系列機能。
Pythonパンダ-環境設定
標準のPythonディストリビューションには、Pandasモジュールがバンドルされていません。 軽量の代替手段は、人気のあるPythonパッケージインストーラー* pip。*を使用してNumPyをインストールすることです
Anaconda Pythonパッケージをインストールすると、パンダはデフォルトで次のようにインストールされます-
Windows
- Anaconda (https://www.continuum.ioから)は、SciPyスタック用の無料のPythonディストリビューションです。 LinuxおよびMacでも利用可能です。
- Canopy (https://www.enthought.com/products/canopy[https://www.enthought.com/products/canopy/])は無料で入手でき、Windows用のフルSciPyスタックを備えた商用ディストリビューション、 LinuxおよびMac。
- Python (x、y)は、SciPyスタックとWindows OS用のSpyder IDEを備えた無料のPythonディストリビューションです。 (http://python-xy.github.io/からダウンロード可能)
Linux
各Linuxディストリビューションのパッケージマネージャーを使用して、1つ以上のパッケージをSciPyスタックにインストールします。
- Ubuntuユーザー向け*
- Fedoraユーザーの場合*
データ構造の概要
パンダは、次の3つのデータ構造を扱います-
- シリーズ
- DataFrame
- パネル
これらのデータ構造はNumpy配列の上に構築されているため、高速です。
寸法と説明
これらのデータ構造を考える最良の方法は、高次元のデータ構造が低次元のデータ構造のコンテナーであることです。 たとえば、DataFrameはSeriesのコンテナであり、PanelはDataFrameのコンテナです。
Data Structure | Dimensions | Description |
---|---|---|
Series | 1 | 1D labeled homogeneous array, sizeimmutable. |
Data Frames | 2 | General 2D labeled, size-mutable tabular structure with potentially heterogeneously typed columns. |
Panel | 3 | General 3D labeled, size-mutable array. |
2次元以上の配列を作成して処理するのは退屈な作業であり、関数を記述するときにデータセットの方向を考慮するのはユーザーの負担となります。 しかし、Pandasデータ構造を使用すると、ユーザーの精神的な労力は軽減されます。
たとえば、表形式のデータ(DataFrame)では、軸0と軸1ではなく、インデックス(行)と*列*を考える方が意味的に役立ちます。
ミュータビリティ
すべてのPandasデータ構造は値可変であり(変更可能)、シリーズを除きすべてサイズ可変です。 シリーズはサイズ不変です。
注-DataFrameは広く使用されており、最も重要なデータ構造の1つです。 パネルの使用はずっと少なくなります。
シリーズ
シリーズは、同種のデータを持つ構造のような1次元配列です。 たとえば、次のシリーズは整数10、23、56、…のコレクションです
10 | 23 | 56 | 17 | 52 | 61 | 73 | 90 | 26 | 72 |
キーポイント
- 同種データ
- サイズ不変
- 可変データの値
DataFrame
DataFrameは、異種データを含む2次元配列です。 例えば、
Name | Age | Gender | Rating |
---|---|---|---|
Steve | 32 | Male | 3.45 |
Lia | 28 | Female | 4.6 |
Vin | 45 | Male | 3.9 |
Katie | 38 | Female | 2.78 |
この表は、組織の営業チームのデータと全体的なパフォーマンス評価を表します。 データは行と列で表されます。 各列は属性を表し、各行は人を表します。
列のデータ型
4列のデータ型は次のとおりです-
Column | Type |
---|---|
Name | String |
Age | Integer |
Gender | String |
Rating | Float |
キーポイント
- 異種データ
- サイズ変更可能
- 可変データ
パネル
パネルは、異種データを含む3次元データ構造です。 パネルをグラフィカルに表現するのは困難です。 ただし、パネルはDataFrameのコンテナーとして示すことができます。
キーポイント
- 異種データ
- サイズ変更可能
- 可変データ
Pythonパンダ-シリーズ
Seriesは、任意のタイプ(整数、文字列、浮動小数点、Pythonオブジェクトなど)のデータを保持できる1次元のラベル付き配列です。 軸ラベルはまとめてインデックスと呼ばれます。
pandas.Series
パンダシリーズは、次のコンストラクタを使用して作成することができます-
コンストラクタのパラメータは次のとおりです-
Sr.No | Parameter & Description |
---|---|
1 |
data データは、ndarray、リスト、定数などのさまざまな形式を取ります |
2 |
index インデックス値は一意でハッシュ可能で、データと同じ長さでなければなりません。 インデックスが渡されない場合のデフォルトの* np.arrange(n)*。 |
3 |
dtype dtypeはデータ型用です。 なしの場合、データ型が推測されます |
4 |
copy データをコピーします。 デフォルトはFalse |
シリーズは、次のようなさまざまな入力を使用して作成できます-
- アレイ
- Dict
- スカラー値または定数
空のシリーズを作成する
作成できる基本シリーズは空のシリーズです。
例
その*出力*は次のとおりです-
ndarrayからシリーズを作成する
データがndarrayの場合、渡されるインデックスは同じ長さでなければなりません。 インデックスが渡されない場合、デフォルトではインデックスは* range(n)になります。 *n は配列の長さ、つまり[0,1,2,3…]です。 * range(len(array))-1]。*
例1
その*出力*は次のとおりです-
インデックスを渡さなかったので、デフォルトでは、0から len(data)-1 、つまり0から3の範囲のインデックスを割り当てました。
例2
その*出力*は次のとおりです-
ここでインデックス値を渡しました。 これで、カスタマイズされたインデックス値が出力に表示されます。
dictからシリーズを作成する
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
Scalarからシリーズを作成する
データがスカラー値の場合、インデックスを提供する必要があります。 値は index の長さと一致するように繰り返されます
その*出力*は次のとおりです-
位置のあるシリーズのデータへのアクセス
シリーズのデータには、* ndarray。*のデータと同様にアクセスできます。
例1
最初の要素を取得します。 既に知っているように、カウントは配列のゼロから始まります。つまり、最初の要素はzero ^ th ^の位置に格納されます。
その*出力*は次のとおりです-
例2
シリーズの最初の3つの要素を取得します。 :がその前に挿入されると、そのインデックス以降のすべてのアイテムが抽出されます。 2つのパラメーター(間に:がある)が使用される場合、2つのインデックス間のアイテム(ストップインデックスを含まない)
その*出力*は次のとおりです-
実施例3
最後の3つの要素を取得します。
その*出力*は次のとおりです-
ラベルを使用してデータを取得(インデックス)
Seriesは、インデックスラベルで値を取得および設定できるという点で、固定サイズの dict に似ています。
例1
インデックスラベル値を使用して単一の要素を取得します。
その*出力*は次のとおりです-
例2
インデックスラベル値のリストを使用して複数の要素を取得します。
その*出力*は次のとおりです-
実施例3
ラベルが含まれていない場合、例外が発生します。
その*出力*は次のとおりです-
Pythonパンダ-DataFrame
データフレームは2次元のデータ構造です。つまり、データは表形式で行と列に配置されます。
DataFrameの機能
- 潜在的に列は異なるタイプです
- サイズ-可変
- ラベル付き軸(行と列) *行と列に対して算術演算を実行できます
構造
学生のデータでデータフレームを作成していると仮定しましょう。
SQLテーブルまたはスプレッドシートのデータ表現と考えることができます。
pandas.DataFrame
パンダのDataFrameは、次のコンストラクタを使用して作成することができます-
コンストラクタのパラメータは次のとおりです-
Sr.No | Parameter & Description |
---|---|
1 |
データは、ndarray、series、map、lists、dict、constant、および別のDataFrameなどのさまざまな形式を取ります。 |
2 |
index 行ラベルの場合、インデックスが渡されない場合、結果のフレームに使用されるインデックスはオプションのデフォルトnp.arrange(n)です。 |
3 |
columns 列ラベルの場合、オプションのデフォルト構文は-np.arrange(n)です。 これは、インデックスが渡されない場合にのみ当てはまります。 |
4 |
dtype 各列のデータ型。 |
5 |
copy デフォルトがFalseの場合、このコマンド(またはそれが何であれ)はデータのコピーに使用されます。 |
DataFrameを作成
パンダDataFrameはのような様々な入力を使用して作成することができます-
- リスト
- dict
- シリーズ
- Numpy ndarrays
- 別のデータフレーム
この章の以降のセクションでは、これらの入力を使用してDataFrameを作成する方法について説明します。
空のデータフレームを作成する
作成できる基本的なDataFrameは空のDataframeです。
例
その*出力*は次のとおりです-
リストからデータフレームを作成する
DataFrameは、単一のリストまたはリストのリストを使用して作成できます。
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
実施例3
その*出力*は次のとおりです-
注意- dtype パラメータは、Ageカラムのタイプを浮動小数点に変更します。
ndarrays/ListsのDictからDataFrameを作成します
すべての ndarrays は同じ長さでなければなりません。 インデックスが渡される場合、インデックスの長さは配列の長さと等しくなければなりません。
インデックスが渡されない場合、デフォルトでは、インデックスはrange(n)になります。ここで、 n は配列の長さです。
例1
その*出力*は次のとおりです-
注-値0、1、2、3を確認します。 それらは、関数range(n)を使用してそれぞれに割り当てられるデフォルトのインデックスです。
例2
ここで、配列を使用してインデックス付きDataFrameを作成します。
その*出力*は次のとおりです-
注-観察、 index パラメータは各行にインデックスを割り当てます。
辞書のリストからデータフレームを作成する
辞書のリストを入力データとして渡して、DataFrameを作成できます。 辞書キーはデフォルトで列名として使用されます。
例1
次の例は、辞書のリストを渡すことでDataFrameを作成する方法を示しています。
その*出力*は次のとおりです-
注-観察、NaN(Not a Number)が欠落領域に追加されます。
例2
次の例は、辞書と行インデックスのリストを渡すことでDataFrameを作成する方法を示しています。
その*出力*は次のとおりです-
実施例3
次の例は、辞書、行インデックス、および列インデックスのリストを使用してDataFrameを作成する方法を示しています。
その*出力*は次のとおりです-
注-観察、df2 DataFrameはディクショナリキー以外の列インデックスで作成されます。したがって、所定の位置にNaNを追加しました。 一方、df1は辞書キーと同じ列インデックスで作成されるため、NaNが追加されます。
シリーズの辞書からデータフレームを作成する
シリーズの辞書を渡して、DataFrameを作成できます。 結果のインデックスは、渡されたすべてのシリーズインデックスの結合です。
例
その*出力*は次のとおりです-
注-シリーズ1では、ラベル「」d *は渡されませんが、結果では、 *d ラベルではNaNにNaNが追加されます。
例を通して、列の選択、追加、および*削除*を理解しましょう。
列の選択
これを理解するには、DataFrameから列を選択します。
例
その*出力*は次のとおりです-
列の追加
これを理解するには、既存のデータフレームに新しい列を追加します。
例
その*出力*は次のとおりです-
列の削除
列は削除またはポップできます。その方法を理解するために例を挙げましょう。
例
その*出力*は次のとおりです-
行の選択、追加、および削除
例を通して行の選択、追加、削除を理解します。 選択の概念から始めましょう。
ラベルによる選択
行を選択するには、行ラベルを loc 関数に渡します。
その*出力*は次のとおりです-
結果は、DataFrameの列名としてラベルを持つシリーズです。 そして、シリーズの名前は、それが取得されるラベルです。
整数位置による選択
整数の位置を iloc 関数に渡すことで行を選択できます。
その*出力*は次のとおりです-
スライス行
「:」演算子を使用して、複数の行を選択できます。
その*出力*は次のとおりです-
行の追加
その*出力*は次のとおりです-
行の削除
インデックスラベルを使用して、DataFrameから行を削除またはドロップします。 ラベルが重複している場合、複数の行が削除されます。
上記の例では、ラベルが重複しています。 ラベルをドロップして、ドロップされる行数を確認します。
その*出力*は次のとおりです-
上記の例では、2つの行に同じラベル0が含まれているため、2つの行が削除されました。
Pythonパンダ-パネル
パネル*は、データの3Dコンテナです。 「パネルデータ」という用語は計量経済学から派生したものであり、パンダという名前の一部を担っています- pan(el)-da(ta)*-s。
3つの軸の名前は、パネルデータに関連する操作を説明する意味的な意味を与えることを意図しています。 彼らは-
- items -軸0、各アイテムは内部に含まれるDataFrameに対応します。
- major_axis -軸1、これは各DataFrameのインデックス(行)です。
- minor_axis -軸2、各DataFrameの列です。
pandas.Panel()
パネルは、次のコンストラクタを使用して作成できます-
コンストラクタのパラメータは次のとおりです-
Parameter | Description |
---|---|
data | Data takes various forms like ndarray, series, map, lists, dict, constants and also another DataFrame |
items | axis=0 |
major_axis | axis=1 |
minor_axis | axis=2 |
dtype | Data type of each column |
copy | Copy data. Default, false |
パネルを作成
パネルは、次のような複数の方法を使用して作成できます-
- ndarraysから
- DataFramesの辞書から
3D ndarrayから
その*出力*は次のとおりです-
注意-空のパネルと上のパネルの寸法を確認してください。すべてのオブジェクトは異なります。
DataFrameオブジェクトの辞書から
その*出力*は次のとおりです-
空のパネルを作成する
空のパネルは、次のようにパネルコンストラクタを使用して作成することができます-
その*出力*は次のとおりです-
パネルからデータを選択する
を使用してパネルからデータを選択します-
- アイテム
- Major_axis
- Minor_axis
アイテムを使用する
その*出力*は次のとおりです-
2つのアイテムがあり、item1を取得しました。 結果は、4行3列のDataFrameになります。これらは、 Major_axis および Minor_axis ディメンションです。
major_axisを使用する
データには、* panel.major_axis(index)*メソッドを使用してアクセスできます。
その*出力*は次のとおりです-
minor_axisを使用する
データには、* panel.minor_axis(index)。*メソッドを使用してアクセスできます。
その*出力*は次のとおりです-
注-寸法の変化を観察します。
Pythonパンダ-基本機能
ここまでで、3つのPandas DataStructureとそれらの作成方法について学びました。 リアルタイムデータ処理における重要性のため、主にDataFrameオブジェクトに焦点を当て、いくつかの他のDataStructureについても説明します。
シリーズの基本機能
Sr.No. | Attribute or Method & Description |
---|---|
1 |
axes 行軸ラベルのリストを返します |
2 |
dtype オブジェクトのdtypeを返します。 |
3 |
empty シリーズが空の場合、Trueを返します。 |
4 |
ndim 基になるデータの次元数を定義1で返します。 |
5 |
size 基になるデータの要素の数を返します。 |
6 |
values シリーズをndarrayとして返します。 |
7 |
head() 最初のn行を返します。 |
8 |
tail() 最後のn行を返します。 |
ここでシリーズを作成し、上記の表にまとめられた属性操作をすべて見てみましょう。
例
その*出力*は次のとおりです-
axes
シリーズのラベルのリストを返します。
その*出力*は次のとおりです-
上記の結果は、0から5までの値のリストのコンパクトな形式、つまり[0,1,2,3,4]です。
空の
オブジェクトが空かどうかを示すブール値を返します。 Trueは、オブジェクトが空であることを示します。
その*出力*は次のとおりです-
ndim
オブジェクトの次元数を返します。 定義により、シリーズは1Dデータ構造であるため、
その*出力*は次のとおりです-
size
シリーズのサイズ(長さ)を返します。
その*出力*は次のとおりです-
値
シリーズの実際のデータを配列として返します。
その*出力*は次のとおりです-
頭と尾
SeriesまたはDataFrameオブジェクトの小さなサンプルを表示するには、head()およびtail()メソッドを使用します。
- head()は最初の *n 行を返します(インデックス値を監視します)。 表示する要素のデフォルト数は5ですが、カスタム数を渡すこともできます。
その*出力*は次のとおりです-
- tail()は、最後の *n 行を返します(インデックス値を監視します)。 表示する要素のデフォルト数は5ですが、カスタム数を渡すこともできます。
その*出力*は次のとおりです-
DataFrameの基本機能
ここで、DataFrameの基本機能について理解しましょう。 次の表に、DataFrameの基本機能に役立つ重要な属性またはメソッドを示します。
Sr.No. | Attribute or Method & Description |
---|---|
1 |
T 行と列を入れ替えます。 |
2 |
axes 行軸ラベルと列軸ラベルを唯一のメンバーとして含むリストを返します。 |
3 |
dtypes このオブジェクトのdtypeを返します。 |
4 |
empty NDFrameが完全に空の場合[アイテムなし]の場合はtrue。軸の長さが0の場合。 |
5 |
ndim 軸の数/配列の次元。 |
6 |
shape DataFrameの次元を表すタプルを返します。 |
7 |
size NDFrameの要素の数。 |
8 |
values NDFrameのナンピー表現。 |
9 |
head() 最初のn行を返します。 |
10 |
tail() 最後のn行を返します。 |
DataFrameを作成し、上記の属性がどのように機能するかをすべて見てみましょう。
例
その*出力*は次のとおりです-
T(転置)
DataFrameの転置を返します。 行と列が入れ替わります。
その*出力*は次のとおりです-
axes
行軸ラベルと列軸ラベルのリストを返します。
その*出力*は次のとおりです-
dtypes
各列のデータ型を返します。
その*出力*は次のとおりです-
空の
オブジェクトが空かどうかを示すブール値を返します。 Trueは、オブジェクトが空であることを示します。
その*出力*は次のとおりです-
ndim
オブジェクトの次元数を返します。 定義により、DataFrameは2Dオブジェクトです。
その*出力*は次のとおりです-
形状
DataFrameの次元を表すタプルを返します。 タプル(a、b)。ここで、aは行数を表し、 b は列数を表します。
その*出力*は次のとおりです-
size
DataFrameの要素の数を返します。
その*出力*は次のとおりです-
値
DataFrameの実際のデータを* NDarray。*として返します
その*出力*は次のとおりです-
頭と尾
DataFrameオブジェクトの小さなサンプルを表示するには、* head()およびtail()メソッドを使用します。 * head()*は最初の *n 行を返します(インデックス値を監視します)。 表示する要素のデフォルト数は5ですが、カスタム数を渡すこともできます。
その*出力*は次のとおりです-
- tail()は、最後の *n 行を返します(インデックス値を監視します)。 表示する要素のデフォルト数は5ですが、カスタム数を渡すこともできます。
その*出力*は次のとおりです-
Pythonパンダ-記述統計
多数のメソッドが、DataFrameの記述統計およびその他の関連操作をまとめて計算します。 これらのほとんどは* sum()、mean()などの集約ですが、 sumsum()などの一部は同じサイズのオブジェクトを生成します。 一般的に、これらのメソッドは_ndarray。\ {sum、std、…}、_と同様に *axis 引数を取りますが、軸は名前または整数で指定できます
- DataFrame -「インデックス」(軸= 0、デフォルト)、「列」(軸= 1)
DataFrameを作成し、この章全体でこのオブジェクトをすべての操作に使用します。
例
その*出力*は次のとおりです-
和()
要求された軸の値の合計を返します。 デフォルトでは、軸はインデックス(axis = 0)です。
その*出力*は次のとおりです-
各列は個別に追加されます(文字列が追加されます)。
軸= 1
この構文は、以下に示す出力を提供します。
その*出力*は次のとおりです-
平均()
平均値を返します
その*出力*は次のとおりです-
std()
数値列のブレセル標準偏差を返します。
その*出力*は次のとおりです-
機能と説明
Python Pandasの記述統計の機能を理解しましょう。 次の表は、重要な機能の一覧です-
Sr.No. | Function | Description |
---|---|---|
1 | count() | Number of non-null observations |
2 | sum() | Sum of values |
3 | mean() | Mean of Values |
4 | median() | Median of Values |
5 | mode() | Mode of values |
6 | std() | Standard Deviation of the Values |
7 | min() | Minimum Value |
8 | max() | Maximum Value |
9 | abs() | Absolute Value |
10 | prod() | Product of Values |
11 | cumsum() | Cumulative Sum |
12 | cumprod() | Cumulative Product |
注-DataFrameは異種データ構造であるため。 一般的な操作はすべての機能で機能するわけではありません。
- * sum()、cumsum()などの関数は、エラーなしで数値と文字(または)文字列データ要素の両方で機能します。 *n の練習ですが、文字の集計は一般的に使用されることはありませんが、これらの関数は例外をスローしません。
- * abs()、cumprod()*などの関数は、DataFrameに文字または文字列データが含まれている場合、そのような操作を実行できないため例外をスローします。
データの要約
- describe()*関数は、DataFrame列に関連する統計の要約を計算します。
その*出力*は次のとおりです-
この関数は、 mean、std 、および IQR 値を提供します。 また、関数は文字列を除外し、数値列に関する概要を提供します。 'include' は、要約のために考慮する必要がある列に関する必要な情報を渡すために使用される引数です。 値のリストを取得します。デフォルトでは、「number」。
- オブジェクト-文字列の列を要約します
- number -数値列を要約します
- all -すべての列をまとめます(リスト値として渡すべきではありません)
今、プログラムで次のステートメントを使用して、出力を確認します-
その*出力*は次のとおりです-
今、次のステートメントを使用して、出力を確認します-
その*出力*は次のとおりです-
Python Pandas-関数アプリケーション
独自のライブラリまたは別のライブラリの機能をPandasオブジェクトに適用するには、3つの重要な方法に注意する必要があります。 これらの方法については以下で説明しました。 使用する適切な方法は、関数がDataFrame全体、行単位または列単位、または要素単位で動作することを期待するかどうかによって異なります。
- 表ごとの関数アプリケーション:pipe()
- 行または列のワイズ関数アプリケーション:apply()
- 要素ごとの関数アプリケーション:applymap()
テーブル単位の関数アプリケーション
関数と適切な数のパラメーターをパイプ引数として渡すことにより、カスタム操作を実行できます。 したがって、操作はDataFrame全体で実行されます。
たとえば、値2をDataFrameのすべての要素に追加します。 その後、
加算機能
加算関数は、2つの数値をパラメーターとして追加し、合計を返します。
ここで、カスタム関数を使用して、DataFrameで操作を実行します。
完全なプログラムを見てみましょう-
その*出力*は次のとおりです-
行または列のワイズ関数アプリケーション
任意の関数は、* apply()*メソッドを使用して、DataFrameまたはPanelの軸に沿って適用できます。これは、記述統計メソッドと同様に、オプションの軸引数を取ります。 デフォルトでは、操作は列ごとに実行され、各列を配列のように取ります。
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
実施例3
その*出力*は次のとおりです-
要素ワイズ関数アプリケーション
すべての関数をベクトル化できるわけではなく(別の配列も値も返さないNumPy配列も)、DataFrameの* applymap()およびSeriesの analyously map()*メソッドは、単一の値を取り、単一の値を返すPython関数を受け入れます値。
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
Pythonパンダ-インデックスの再作成
- 再インデックス*は、DataFrameの行ラベルと列ラベルを変更します。 _reindex_とは、特定の軸に沿ってラベルの特定のセットに一致するようにデータを適合させることを意味します。
複数の操作は、次のようなインデックス作成によって実現できます-
- 新しいラベルのセットと一致するように既存のデータを並べ替えます。
- ラベルのデータが存在しないラベル位置に欠損値(NA)マーカーを挿入します。
例
その*出力*は次のとおりです-
他のオブジェクトに合わせて再インデックス付け
オブジェクトを取得し、その軸のインデックスを再作成して、別のオブジェクトと同じラベルを付けることができます。 同じことを理解するには、次の例を検討してください。
例
その*出力*は次のとおりです-
注-ここでは、 df1 DataFrameが変更され、 df2 のようにインデックスが再作成されます。 列名は一致する必要があります。一致しない場合、列ラベル全体にNANが追加されます。
再インデックス中の塗りつぶし
- reindex()*は、オプションのパラメーターメソッドを取ります。これは、次のような値を持つ充填メソッドです-
- pad/ffill -値を前方に埋める
- bfill/backfill -値を逆方向に埋める
- nearest -最も近いインデックス値から塗りつぶします
例
その*出力*は次のとおりです-
注-最後の4行はパディングされます。
再インデックス中の塗りつぶしの制限
limit引数は、インデックス再作成中の塗りつぶしをさらに制御します。 制限は、連続した一致の最大カウントを指定します。 同じことを理解するために、次の例を考えてみましょう-
例
その*出力*は次のとおりです-
注-観察、7行目のみが前の6行目で埋められます。 その後、行はそのまま残ります。
改名
rename()メソッドを使用すると、マッピング(dictまたはSeries)または任意の関数に基づいて軸のラベルを変更できます。
これを理解するために次の例を考えてみましょう-
その*出力*は次のとおりです-
rename()メソッドは、 inplace という名前のパラメーターを提供します。このパラメーターはデフォルトでFalseであり、基になるデータをコピーします。 inplace = True を渡して、その場でデータの名前を変更します。
Pythonパンダ-反復
Pandasオブジェクトに対する基本的な反復の動作は、タイプによって異なります。 Seriesを反復処理する場合、それは配列のようなものと見なされ、基本的な反復処理によって値が生成されます。 DataFrameやPanelなどの他のデータ構造は、オブジェクトの keys を反復処理する* dictのような*規則に従います。
要するに、基本的な反復(オブジェクトの i の場合)は次を生成します-
- シリーズ-値
- DataFrame -列ラベル
- パネル-アイテムのラベル
DataFrameの反復
DataFrameを反復すると、列名が与えられます。 同じことを理解するために、次の例を考えてみましょう。
その*出力*は次のとおりです-
DataFrameの行を反復するには、次の関数を使用できます-
- * iteritems()*-(キー、値)のペアを反復処理する
- * iterrows()*-(インデックス、シリーズ)のペアとして行を反復処理する
- * itertuples()*-namedtuplesとして行を反復処理します
iteritems()
各列をキーとして、値のペアをラベルとしてキー、列の値をシリーズオブジェクトとして繰り返します。
その*出力*は次のとおりです-
各列は、シリーズのキーと値のペアとして個別に繰り返されます。
iterrows()
iterrows()は、各インデックス値と各行のデータを含むシリーズを生成するイテレータを返します。
その*出力*は次のとおりです-
注-* iterrows()*は行を反復処理するため、行全体でデータ型を保持しません。 0,1,2は行インデックスであり、col1、col2、col3は列インデックスです。
itertuples()
itertuples()メソッドは、DataFrameの各行に対して名前付きタプルを生成する反復子を返します。 タプルの最初の要素は行の対応するインデックス値であり、残りの値は行の値です。
その*出力*は次のとおりです-
注意-反復中はオブジェクトを変更しないでください。 反復は読み取りを目的としており、反復子は元のオブジェクト(ビュー)のコピーを返すため、変更は元のオブジェクトに反映されません。
その*出力*は次のとおりです-
観察、変更は反映されません。
Pythonパンダ-並べ替え
Pandasには2種類の並べ替えがあります。 彼らは-
- ラベル別
- 実際の値で
出力のある例を考えてみましょう。
その*出力*は次のとおりです-
ラベル別
- sort_index()*メソッドを使用して、軸の引数と並べ替えの順序を渡すことにより、DataFrameを並べ替えることができます。 デフォルトでは、ソートは行ラベルで昇順で実行されます。
その*出力*は次のとおりです-
ソート順
ブール値を昇順パラメーターに渡すことにより、ソートの順序を制御できます。 同じことを理解するために、次の例を考えてみましょう。
その*出力*は次のとおりです-
列を並べ替える
値0または1で軸引数を渡すことにより、列ラベルでソートを実行できます。 デフォルトでは、axis = 0で、行でソートされます。 同じことを理解するために、次の例を考えてみましょう。
その*出力*は次のとおりです-
値で
インデックスのソートと同様に、* sort_values()*は値でソートするためのメソッドです。 値を並べ替えるDataFrameの列名を使用する「by」引数を受け入れます。
その*出力*は次のとおりです-
col1の値が並べ替えられ、それぞれのcol2の値と行インデックスがcol1とともに変化することに注意してください。 したがって、それらは分類されていないように見えます。
その*出力*は次のとおりです-
ソートアルゴリズム
- sort_values()*は、mergesort、heapsort、quicksortからアルゴリズムを選択するための規定を提供します。 Mergesortは唯一の安定したアルゴリズムです。
その*出力*は次のとおりです-
Python Pandas-テキストデータの操作
この章では、基本的なシリーズ/インデックスを使用した文字列操作について説明します。 後続の章では、これらの文字列関数をDataFrameに適用する方法を学習します。
Pandasは、文字列データの操作を容易にする一連の文字列関数を提供します。 最も重要なことは、これらの関数は欠損/NaN値を無視(または除外)することです。
ほとんどの場合、これらのメソッドはすべてPython文字列関数で機能します(https://docs.python.org/3/library/stdtypesl#string-methodsを参照)。 そのため、SeriesオブジェクトをStringオブジェクトに変換してから、操作を実行します。
各操作の実行方法を見てみましょう。
Sr.No | Function & Description |
---|---|
1 |
lower() シリーズ/インデックスの文字列を小文字に変換します。 |
2 |
upper() Series/Indexの文字列を大文字に変換します。 |
3 |
len() String length()を計算します。 |
4 |
strip() 両側のSeries/indexの各文字列から空白(改行を含む)を取り除くのに役立ちます。 |
5 |
split(' ') 指定されたパターンで各文字列を分割します。 |
6 |
cat(sep=' ') シリーズ/インデックス要素を指定されたセパレータで連結します。 |
7 |
get_dummies() ワンホットエンコード値でDataFrameを返します。 |
8 |
contains(pattern) 部分文字列が要素に含まれる場合は各要素に対してブール値Trueを返し、そうでない場合はFalseを返します。 |
9 |
replace(a,b) 値 a を値 b に置き換えます。 |
10 |
repeat(value) 指定された回数で各要素を繰り返します。 |
11 |
count(pattern) 各要素のパターンの出現回数を返します。 |
12 |
startswith(pattern) Series/Indexの要素がパターンで始まる場合、trueを返します。 |
13 |
endswith(pattern) Series/Indexの要素がパターンで終わる場合、trueを返します。 |
14 |
find(pattern) パターンが最初に現れる最初の位置を返します。 |
15 |
findall(pattern) パターンのすべての出現のリストを返します。 |
16 |
swapcase ケースの下部/上部を交換します。 |
17 |
islower() シリーズ/インデックスの各文字列のすべての文字が小文字かどうかを確認します。 ブール値を返します |
18 |
isupper() Series/Indexの各文字列のすべての文字が大文字かどうかを確認します。 ブール値を返します。 |
19 |
isnumeric() シリーズ/インデックスの各文字列のすべての文字が数値であるかどうかを確認します。 ブール値を返します。 |
ここでシリーズを作成し、上記のすべての機能がどのように機能するかを見てみましょう。
その*出力*は次のとおりです-
lower()
その*出力*は次のとおりです-
アッパー()
その*出力*は次のとおりです-
len()
その*出力*は次のとおりです-
ストリップ()
その*出力*は次のとおりです-
split(パターン)
その*出力*は次のとおりです-
cat(sep = pattern)
その*出力*は次のとおりです-
get_dummies()
その*出力*は次のとおりです-
含む()
その*出力*は次のとおりです-
replace(a、b)
その*出力*は次のとおりです-
繰り返し(値)
その*出力*は次のとおりです-
カウント(パターン)
その*出力*は次のとおりです-
startswith(パターン)
その*出力*は次のとおりです-
endswith(パターン)
その*出力*は次のとおりです-
find(パターン)
その*出力*は次のとおりです-
「-1」は、そのようなパターンが要素にないことを示します。
findall(パターン)
その*出力*は次のとおりです-
Null list([])は、要素にそのようなパターンが存在しないことを示します。
swapcase()
その*出力*は次のとおりです-
islower()
その*出力*は次のとおりです-
isupper()
その*出力*は次のとおりです-
isnumeric()
その*出力*は次のとおりです-
Python Pandas-オプションとカスタマイズ
パンダは、その動作のいくつかの側面をカスタマイズするためのAPIを提供し、ディスプレイが主に使用されています。
APIは、5つの関連する機能で構成されています。 彼らは-
- get_option()
- set_option()
- reset_option()
- describe_option()
- option_context()
関数がどのように動作するかを理解しましょう。
get_option(param)
get_optionは単一のパラメータを取り、以下の出力で与えられた値を返します-
display.max_rows
値のデフォルト数を表示します。 通訳者はこの値を読み取り、表示する上限としてこの値を持つ行を表示します。
その*出力*は次のとおりです-
display.max_columns
値のデフォルト数を表示します。 通訳者はこの値を読み取り、表示する上限としてこの値を持つ行を表示します。
その*出力*は次のとおりです-
ここで、60および20はデフォルトの構成パラメーター値です。
set_option(param、value)
set_optionは2つの引数を取り、以下に示すようにパラメータに値を設定します-
display.max_rows
- set_option()*を使用して、表示するデフォルトの行数を変更できます。
その*出力*は次のとおりです-
display.max_columns
- set_option()*を使用して、表示するデフォルトの行数を変更できます。
その*出力*は次のとおりです-
reset_option(param)
display.max_rows
reset_option()を使用して、表示するデフォルトの行数に戻すことができます。
その*出力*は次のとおりです-
describe_option(param)
display.max_rows
reset_option()を使用して、表示するデフォルトの行数に戻すことができます。
その*出力*は次のとおりです-
option_context()
option_contextコンテキストマネージャーは、* withステートメント*でオプションを一時的に設定するために使用されます。 with block を終了すると、オプション値は自動的に復元されます-
display.max_rows
option_context()を使用して、値を一時的に設定できます。
その*出力*は次のとおりです-
1番目と2番目のprintステートメントの違いを参照してください。 最初のステートメントは、 with_context 自体の内部で一時的な* option_context()によって設定された値を出力します。 *with context の後、2番目のprintステートメントは設定された値を出力します。
よく使用されるパラメーター
Sr.No | Parameter & Description |
---|---|
1 |
display.max_rows 表示する最大行数を表示します |
2 |
2 display.max_columns 表示する列の最大数を表示します |
3 |
display.expand_frame_repr ページをストレッチするためのデータフレームを表示します |
4 |
display.max_colwidth 最大列幅を表示します |
5 |
display.precision 10進数の精度を表示します |
Python Pandas-データのインデックス作成と選択
この章では、日付を切り刻み、パンダオブジェクトのサブセットを取得する方法について説明します。
PythonおよびNumPyのインデックス演算子「[]」および属性演算子「。」幅広いユースケースでPandasデータ構造にすばやく簡単にアクセスできます。 ただし、アクセスするデータのタイプは事前にはわからないため、標準演算子を直接使用すると最適化の制限がいくつかあります。 本番コードの場合、この章で説明する最適化されたパンダデータアクセス方法を利用することをお勧めします。
パンダは現在、3種類のマルチ軸インデックスをサポートしています。 3つのタイプは、次の表に記載されています-
Sr.No | Indexing & Description |
---|---|
1 |
.loc() ラベルベース |
2 |
.iloc() 整数ベース |
3 |
.ix() ラベルと整数ベースの両方 |
.loc()
パンダは、純粋に*ラベルベースのインデックス作成*を行うためのさまざまな方法を提供します。 スライスするとき、開始境界も含まれます。 整数は有効なラベルですが、位置ではなくラベルを参照します。
.loc()*には複数のアクセス方法があります-
単一のスカラーラベル
ラベルのリスト
スライスオブジェクト
ブール配列
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
実施例3
その*出力*は次のとおりです-
実施例4
その*出力*は次のとおりです-
実施例5
その*出力*は次のとおりです-
.iloc()
パンダは、純粋に整数ベースのインデックスを取得するためにさまざまなメソッドを提供します。 pythonやnumpyと同様に、これらは* 0ベースのインデックスです。
さまざまなアクセス方法は次のとおりです-
- 整数
- 整数のリスト
- 値の範囲
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
実施例3
その*出力*は次のとおりです-
.ix()
Pandasは、純粋なラベルベースと整数ベースに加えて、.ix()演算子を使用してオブジェクトを選択およびサブセット化するハイブリッドメソッドを提供します。
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
表記法の使用
Multi-axesインデックスを使用してPandasオブジェクトから値を取得するには、次の表記法を使用します-
Object | Indexers | Return Type |
---|---|---|
Series | s.loc[indexer] | Scalar value |
DataFrame | df.loc[row_index,col_index] | Series object |
Panel | p.loc[item_index,major_index, minor_index] | p.loc[item_index,major_index, minor_index] |
- 注意-.iloc()&.ix()*は、同じインデックスオプションと戻り値を適用します。
DataFrameオブジェクトで各操作を実行する方法を見てみましょう。 基本的なインデックス演算子「[]」を使用します-
例1
その*出力*は次のとおりです-
注意-値のリストを[]に渡して、それらの列を選択できます。
例2
その*出力*は次のとおりです-
実施例3
その*出力*は次のとおりです-
属性アクセス
列は、属性演算子「。」を使用して選択できます。
例
その*出力*は次のとおりです-
Pythonパンダ-統計関数
統計的手法は、データの動作の理解と分析に役立ちます。 ここで、Pandasオブジェクトに適用できるいくつかの統計関数を学習します。
変化率
シリーズ、DatFrames、およびパネルには、すべて* pct_change()*関数があります。 この関数は、すべての要素をその前の要素と比較し、変化率を計算します。
その*出力*は次のとおりです-
デフォルトでは、* pct_change()は列に対して機能します。同じ行を適用する場合は、 axis = 1()*引数を使用します。
共分散
共分散は系列データに適用されます。 Seriesオブジェクトには、シリーズオブジェクト間の共分散を計算するメソッドcovがあります。 NAは自動的に除外されます。
Covシリーズ
その*出力*は次のとおりです-
DataFrameに適用された共分散法は、すべての列間で cov を計算します。
その*出力*は次のとおりです-
注-最初のステートメントの a と b 列の間の cov を観察します。これは、DataFrameのcovによって返される値です。
相関
相関関係は、任意の2つの値の配列(系列)の間の線形関係を示しています。 ピアソン(デフォルト)、スピアマン、ケンドールなど、相関を計算する方法は複数あります。
その*出力*は次のとおりです-
DataFrameに数値以外の列がある場合、自動的に除外されます。
データランキング
データのランキングは、要素の配列内の各要素のランキングを生成します。 同順位の場合、平均ランクを割り当てます。
その*出力*は次のとおりです-
ランクは、オプションで、デフォルトでtrueであるパラメータの昇順を取ります。 falseの場合、データは逆ランク付けされ、値が大きいほど小さいランクが割り当てられます。
ランクは、メソッドパラメータで指定されたさまざまなタイブレークメソッドをサポートしています-
- 平均-同順位グループの平均ランク
- min -グループ内の最低ランク
- max -グループ内の最高ランク
- first -配列に現れる順序で割り当てられたランク
Pythonパンダ-ウィンドウ関数
Pandasは、数値データを扱うために、ウィンドウ統計の重みをローリング、拡張、指数関数的に移動するなど、いくつかのバリエーションを提供します。 これらには、合計、平均、中央値、分散、共分散、相関などがあります。
次に、これらのそれぞれをDataFrameオブジェクトに適用する方法を学習します。
.rolling()関数
この関数は、一連のデータに適用できます。 window = n 引数を指定し、その上に適切な統計関数を適用します。
その*出力*は次のとおりです-
注-ウィンドウサイズは3であるため、最初の2つの要素にはnullがあり、3番目以降の値は n 、 n-1 、および n-2 要素の平均になります。 したがって、前述のさまざまな機能を適用することもできます。
.expanding()関数
この関数は、一連のデータに適用できます。 min_periods = n 引数を指定し、その上に適切な統計関数を適用します。
その*出力*は次のとおりです-
.ewm()関数
その*出力*は次のとおりです-
ウィンドウ関数は、曲線を平滑化することにより、データ内の傾向をグラフィカルに見つけるのに主に使用されます。 毎日のデータに多くの変動があり、多くのデータポイントが利用できる場合、サンプルを取得してプロットすることは1つの方法であり、ウィンドウ計算を適用して結果にグラフをプロットすることは別の方法です。 これらの方法により、曲線または傾向を滑らかにすることができます。
Pythonパンダ-集約
ローリング、エキスパンド、および ewm オブジェクトが作成されると、いくつかの方法を使用してデータの集計を実行できます。
DataFrameでの集計の適用
DataFrameを作成し、その上に集計を適用してみましょう。
その*出力*は次のとおりです-
関数をDataFrame全体に渡すか、標準の get item メソッドを使用して列を選択することで集計できます。
データフレーム全体に集計を適用する
その*出力*は次のとおりです-
データフレームの単一の列に集計を適用する
その*出力*は次のとおりです-
DataFrameの複数の列に集計を適用する
その*出力*は次のとおりです-
DataFrameの単一の列に複数の関数を適用する
その*出力*は次のとおりです-
DataFrameの複数の列に複数の関数を適用する
その*出力*は次のとおりです-
データフレームの異なる列に異なる関数を適用する
その*出力*は次のとおりです-
Pythonパンダ-欠落データ
現実のシナリオでは、データの欠落は常に問題です。 機械学習やデータマイニングなどの分野は、欠損値が原因でデータの品質が低下するため、モデル予測の精度に重大な問題があります。 これらの領域では、欠損値の処理がモデルをより正確かつ有効にするための主要な焦点です。
データが欠落するタイミングと理由
製品のオンライン調査について考えてみましょう。 多くの場合、人々は自分に関連するすべての情報を共有しません。 経験を共有している人はほとんどいませんが、製品を使用している期間はありません。製品を使用している期間、経験は共有しているが、連絡先情報は共有していない人はほとんどいません。 したがって、何らかの方法でデータの一部が常に欠落しています。これはリアルタイムでは非常に一般的です。
パンダを使用して欠損値(NAやNaNなど)を処理する方法を見てみましょう。
その*出力*は次のとおりです-
インデックスの再作成を使用して、欠損値のあるDataFrameを作成しました。 出力では、 NaN は* Not a Number。*を意味します。
欠損値の確認
欠損値の検出を容易にするため(および異なる配列dtype全体)、PandasはSeriesおよびDataFrameオブジェクトのメソッドでもある* isnull()および notnull()*関数を提供します-
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
欠損データを含む計算
- データを合計する場合、NAはゼロとして扱われます
- データがすべてNAの場合、結果はNAになります
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
欠損データのクリーニング/充填
パンダは、欠損値をクリーニングするためのさまざまな方法を提供します。 fillna関数は、次のセクションで説明したように、いくつかの方法でNA値に非NULLデータを「埋める」ことができます。
NaNをスカラー値に置き換える
次のプログラムは、「NaN」を「0」に置き換える方法を示しています。
その*出力*は次のとおりです-
ここでは、値ゼロで埋めています。代わりに、他の値を入力することもできます。
NAを前後に埋める
ReIndexingの章で説明した充填の概念を使用して、欠損値を充填します。
Sr.No | Method & Action |
---|---|
1 |
pad/fill 塗りつぶしメソッド |
2 |
bfill/backfill 塗りつぶしメソッド |
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
欠損値を削除
欠損値を単純に除外したい場合は、 axis 引数と共に dropna 関数を使用します。 デフォルトでは、axis = 0、つまり行に沿っています。つまり、行内の値がNAの場合、行全体が除外されます。
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
欠落している(または)汎用値を置換する
多くの場合、一般的な値を特定の値に置き換える必要があります。 replaceメソッドを適用することでこれを実現できます。
NAをスカラー値に置き換えることは、* fillna()*関数と同等の動作です。
例1
その*出力*は次のとおりです-
例2
その*出力*は次のとおりです-
Pythonパンダ-GroupBy
- *分割*オブジェクト
- *適用*関数
- 結果を組み合わせる
多くの場合、データをセットに分割し、各サブセットにいくつかの機能を適用します。 適用機能では、次の操作を実行できます-
- 集計-要約統計量の計算
- 変換-いくつかのグループ固有の操作を実行します
- フィルター-何らかの条件でデータを破棄する
ここでDataFrameオブジェクトを作成し、そのすべての操作を実行しましょう-
その*出力*は次のとおりです-
データをグループに分割する
パンダオブジェクトは、任意のオブジェクトに分割できます。 のようなオブジェクトを分割する複数の方法があります-
- obj.groupby( 'key')
- obj.groupby(['key1'、 'key2'])
- obj.groupby(key、axis = 1)
グループ化オブジェクトをDataFrameオブジェクトに適用する方法を見てみましょう
例
その*出力*は次のとおりです-
グループを表示
その*出力*は次のとおりです-
例
- 複数の列を持つ*でグループ化-
その*出力*は次のとおりです-
グループを反復処理する
その*出力*は次のとおりです-
デフォルトでは、 groupby オブジェクトのラベル名はグループ名と同じです。
グループを選択
- get_group()*メソッドを使用して、単一のグループを選択できます。
その*出力*は次のとおりです-
集計
集約関数は、グループごとに1つの集約値を返します。 group by オブジェクトが作成されると、グループ化されたデータに対していくつかの集計操作を実行できます。
明らかなものは、集計または同等の agg メソッドによる集計です-
その*出力*は次のとおりです-
各グループのサイズを確認する別の方法は、size()関数を適用することです-
その*出力*は次のとおりです-
複数の集約関数を一度に適用する
グループ化されたシリーズでは、 list または dict of functions を渡して集約を行い、DataFrameを出力として生成することもできます-
その*出力*は次のとおりです-
変換
グループまたは列の変換は、グループ化されているものと同じサイズのインデックスが付けられたオブジェクトを返します。 したがって、変換は、グループチャンクのサイズと同じサイズの結果を返す必要があります。
その*出力*は次のとおりです-
濾過
ろ過は、定義された基準でデータをフィルタリングし、データのサブセットを返します。 * filter()*関数は、データのフィルタリングに使用されます。
その*出力*は次のとおりです-
上記のフィルター条件では、IPLに3回以上参加したチームを返すよう求めています。
Python Pandas-マージ/参加
Pandasには、SQLなどのリレーショナルデータベースに非常によく似た、フル機能の高性能なメモリ内結合操作があります。
パンダは、DataFrameオブジェクト間のすべての標準データベース結合操作のエントリポイントとして、単一の関数 merge を提供します-
ここでは、次のパラメータを使用しました-
- 左-DataFrameオブジェクト。
- right -別のDataFrameオブジェクト。
- on -結合する列(名前)。 左右のDataFrameの両方にある必要があります オブジェクト
- left_on -キーとして使用する左側のDataFrameの列。 DataFrameの長さと等しい長さの列名または配列のいずれかです。
- right_on -キーとして使用する右側のDataFrameの列。 DataFrameの長さと等しい長さの列名または配列のいずれかです。
- left_index -* Trueの場合、*左側のDataFrameのインデックス(行ラベル)を結合キーとして使用します。 MultiIndex(階層)を持つDataFrameの場合、レベルの数は、右側のDataFrameからの結合キーの数と一致する必要があります。
- right_index -右側のDataFrameの left_index と同じ使用法。
- 方法-「左」、「右」、「外側」、「内側」のいずれか。 デフォルトは内部です。 それぞれの方法について以下に説明します。
- sort -辞書データ順に結合キーで結果のDataFrameをソートします。 デフォルトはTrueで、Falseに設定すると、多くの場合、パフォーマンスが大幅に向上します。
2つの異なるDataFrameを作成し、その上でマージ操作を実行してみましょう。
その*出力*は次のとおりです-
キー上の2つのデータフレームをマージする
その*出力*は次のとおりです-
複数のキーで2つのデータフレームをマージする
その*出力*は次のとおりです-
「how」引数を使用したマージ
mergeの how 引数は、結果のテーブルに含めるキーを決定する方法を指定します。 キーの組み合わせが左テーブルにも右テーブルにも表示されない場合、結合テーブルの値はNAになります。
ここに*方法*オプションとそれらに相当するSQL名の要約があります-
Merge Method | SQL Equivalent | Description |
---|---|---|
left | LEFT OUTER JOIN | Use keys from left object |
right | RIGHT OUTER JOIN | Use keys from right object |
outer | FULL OUTER JOIN | Use union of keys |
inner | INNER JOIN | Use intersection of keys |
左結合
その*出力*は次のとおりです-
右結合
その*出力*は次のとおりです-
外部結合
その*出力*は次のとおりです-
内部結合
結合はインデックスで実行されます。 結合操作は、呼び出されたオブジェクトを優先します。 したがって、* a.join(b)は b.join(a)*と等しくありません。
その*出力*は次のとおりです-
Pythonパンダ-連結
Pandasは、 Series、DataFrame 、および Panel オブジェクトを簡単に組み合わせるためのさまざまな機能を提供します。
- * objs-これは、Series、DataFrame、またはPanelオブジェクトのシーケンスまたはマッピングです。
- axis -\ {0、1、…}、デフォルトは0。 これは、連結する軸です。
- join -\ {「inner」、「outer」}、デフォルトは「outer」。 他の軸のインデックスを処理する方法。 結合の外側と交差の内側。
- ignore_index -ブール値、デフォルトはFalse。 Trueの場合、連結軸でインデックス値を使用しないでください。 結果の軸には、0、…、n-1というラベルが付けられます。
- join_axes -これは、インデックスオブジェクトのリストです。 内部/外部セットロジックを実行する代わりに、他の(n-1)軸に使用する特定のインデックス。
オブジェクトの連結
その*出力*は次のとおりです-
特定のキーを、切り刻まれたDataFrameの各部分に関連付けたいとします。 これを行うには、 keys 引数を使用します-
その*出力*は次のとおりです-
結果のインデックスは複製されます。各インデックスが繰り返されます。
結果のオブジェクトが独自のインデックス付けに従う必要がある場合は、 ignore_index を True に設定します。
その*出力*は次のとおりです-
インデックスが完全に変更され、キーも上書きされることに注意してください。
その*出力*は次のとおりです-
appendを使用した連結
concatへの便利なショートカットは、SeriesおよびDataFrameのappendインスタンスメソッドです。 これらのメソッドは、実際に連結に先行していました。 彼らは*軸= 0 *、すなわちインデックスに沿って連結します-
その*出力*は次のとおりです-
その*出力*は次のとおりです-
時系列
パンダは、特に金融セクターにおいて、時系列データを使用した勤務時間の堅牢なツールを提供します。 時系列データを操作している間、次のことに頻繁に遭遇します-
- 時間の生成シーケンス
- 時系列を異なる周波数に変換します
Pandasは、上記のタスクを実行するための比較的コンパクトで自己完結型のツールセットを提供します。
現在の時刻を取得
- datetime.now()*は現在の日付と時刻を提供します。
その*出力*は次のとおりです-
タイムスタンプを作成する
タイムスタンプ付きデータは、値と時点を関連付ける最も基本的なタイプの時系列データです。 パンダオブジェクトの場合は、特定の時点を使用することを意味します。 例を見てみましょう-
その*出力*は次のとおりです-
整数または浮動エポック時間に変換することも可能です。 これらのデフォルトの単位はナノ秒です(これらはタイムスタンプの格納方法であるため)。 ただし、多くの場合、エポックは指定可能な別のユニットに保存されます。 別の例を見てみましょう
その*出力*は次のとおりです-
時間の範囲を作成する
その*出力*は次のとおりです-
時間の頻度を変更する
その*出力*は次のとおりです-
タイムスタンプへの変換
文字列、エポック、または混合など、日付のようなオブジェクトのシリーズまたはリストのようなオブジェクトを変換するには、 to_datetime 関数を使用できます。 渡されると、これは(同じインデックスを持つ)Seriesを返しますが、 list-like は DatetimeIndex に変換されます。 次の例を見てください-
その*出力*は次のとおりです-
別の例を見てみましょう。
その*出力*は次のとおりです-
Pythonパンダ-日付機能
時系列を拡張する日付機能は、財務データ分析で重要な役割を果たします。 日付データで作業している間、私たちは頻繁に次のものに遭遇します-
- 日付のシーケンスを生成する
- 日付シリーズを異なる頻度に変換する
日付の範囲を作成する
期間と頻度を指定して* date.range()*関数を使用すると、日付系列を作成できます。 デフォルトでは、範囲の頻度は日数です。
その*出力*は次のとおりです-
日付の頻度を変更する
その*出力*は次のとおりです-
bdate_range
bdate_range()は営業日範囲を表します。 date_range()とは異なり、土曜日と日曜日は除外されます。
その*出力*は次のとおりです-
3月3日以降、日付は4日と5日を除いて6月3日にジャンプします。 カレンダーを確認してください。
その*出力*は次のとおりです-
オフセットエイリアス
有用な一般的な時系列周波数に、多くの文字列エイリアスが与えられます。 これらのエイリアスをオフセットエイリアスと呼びます。
Alias | Description | Alias | Description |
---|---|---|---|
B | business day frequency | BQS | business quarter start frequency |
D | calendar day frequency | A | annual(Year) end frequency |
W | weekly frequency | BA | business year end frequency |
M | month end frequency | BAS | business year start frequency |
SM | semi-month end frequency | BH | business hour frequency |
BM | business month end frequency | H | hourly frequency |
MS | month start frequency | T, min | minutely frequency |
SMS | SMS semi month start frequency | S | secondly frequency |
BMS | business month start frequency | L, ms | milliseconds |
Q | quarter end frequency | U, us | microseconds |
BQ | business quarter end frequency | N | nanoseconds |
QS | quarter start frequency |
Pythonパンダ-タイムデルタ
タイムデルタは時間の差であり、日、時間、分、秒などの異なる単位で表されます。 彼らは正と負の両方にすることができます。
以下に示すように、さまざまな引数を使用してTimedeltaオブジェクトを作成できます-
ひも
文字列リテラルを渡すことで、timedeltaオブジェクトを作成できます。
その*出力*は次のとおりです-
整数
整数値をユニットに渡すことにより、引数はTimedeltaオブジェクトを作成します。
その*出力*は次のとおりです-
データオフセット
-週、日、時間、分、秒、ミリ秒、マイクロ秒、ナノ秒などのデータオフセットも構築に使用できます。
その*出力*は次のとおりです-
to_timedelta()
最上位の pd.to_timedelta を使用すると、スカラー、配列、リスト、またはシリーズを、認識されたタイムデルタ形式/値からタイムデルタ型に変換できます。 入力がシリーズの場合はシリーズを構築し、入力がスカラーのような場合はスカラーを構築し、そうでない場合は TimedeltaIndex を出力します。
その*出力*は次のとおりです-
オペレーション
Series/DataFramesを操作し、 datetime64 [ns] SeriesまたはTimestampsの減算演算により timedelta64 [ns] Seriesを構築できます。
ここで、Timedeltaおよびdatetimeオブジェクトを使用してDataFrameを作成し、その上でいくつかの算術演算を実行しましょう-
その*出力*は次のとおりです-
追加操作
その*出力*は次のとおりです-
減算演算
その*出力*は次のとおりです-
Pythonパンダ-カテゴリーデータ
多くの場合、リアルタイムでは、データにはテキスト列が含まれますが、これは反復的です。 性別、国、コードなどの機能は常に繰り返されます。 これらは、カテゴリデータの例です。
カテゴリー変数は、限られた、通常は固定数の可能な値のみを取ります。 固定長に加えて、カテゴリデータには順序がありますが、数値演算を実行できません。 カテゴリーはパンダのデータ型です。
カテゴリーのデータ型は、次の場合に便利です-
- 少数の異なる値のみで構成される文字列変数。 このような文字列変数をカテゴリ変数に変換すると、メモリを節約できます。
- 変数の字句順序は、論理順序と同じではありません(「1」、「2」、「3」)。 カテゴリに変換し、カテゴリの順序を指定することにより、並べ替えと最小/最大は、語彙の順序ではなく論理的な順序を使用します。
- この列をカテゴリ変数として扱う必要があるという他のpythonライブラリへのシグナルとして(例: 適切な統計手法またはプロットタイプを使用します)。
オブジェクト作成
カテゴリオブジェクトは複数の方法で作成できます。 さまざまな方法が以下に説明されています-
カテゴリー
pandasオブジェクト作成でdtypeを「category」として指定します。
その*出力*は次のとおりです-
シリーズオブジェクトに渡される要素の数は4ですが、カテゴリは3つだけです。 出力カテゴリで同じことを確認します。
pd.Categorical
標準のパンダカテゴリコンストラクタを使用して、カテゴリオブジェクトを作成できます。
例を見てみましょう-
その*出力*は次のとおりです-
別の例を見てみましょう-
その*出力*は次のとおりです-
ここで、2番目の引数はカテゴリを示します。 したがって、カテゴリに存在しない値は NaN として扱われます。
今、次の例を見てみましょう-
その*出力*は次のとおりです-
論理的に、順序は、 a が b より大きく、 b が c より大きいことを意味します。
説明
カテゴリデータで* .describe()コマンドを使用すると、 *type 文字列の Series または DataFrame に同様の出力が得られます。
その*出力*は次のとおりです-
カテゴリのプロパティを取得する
その*出力*は次のとおりです-
その*出力*は次のとおりです-
順序を指定していないため、関数は false を返しました。
カテゴリの名前を変更する
カテゴリの名前を変更するには、* series.cat.categories * series.cat.categoriesプロパティに新しい値を割り当てます。
その*出力*は次のとおりです-
初期カテゴリ [a、b、c] は、オブジェクトの s.cat.categories プロパティによって更新されます。
新しいカテゴリの追加
Categorical.add.categories()メソッドを使用して、新しいカテゴリを追加できます。
その*出力*は次のとおりです-
カテゴリを削除する
- Categorical.remove_categories()*メソッドを使用すると、不要なカテゴリを削除できます。
その*出力*は次のとおりです-
カテゴリデータの比較
カテゴリデータを他のオブジェクトと比較することは、次の3つの場合に可能です-
- 等しい(==および!=)をリストのようなオブジェクト(リスト、シリーズ、配列、…)と比較する カテゴリデータと同じ長さ。
- 別のカテゴリデータとのすべての比較(==、!=、>、> =、<、および⇐) categorical Series、ordered == Trueの場合、カテゴリは同じです。
- カテゴリカルデータとスカラーのすべての比較。
次の例を見てください-
その*出力*は次のとおりです-
Pythonパンダ-視覚化
基本的なプロット:プロット
SeriesおよびDataFrameのこの機能は、 matplotlib * libraries plot()*メソッドの単純なラッパーです。
その*出力*は次のとおりです-
インデックスが日付で構成されている場合、* gct()。autofmt_xdate()*を呼び出して、上の図に示すようにx軸をフォーマットします。
プロット方法では、デフォルトのラインプロット以外のいくつかのプロットスタイルを使用できます。 これらのメソッドは、* plot()*のkindキーワード引数として提供できます。 これらには-
- バープロットのバーまたはバー
- ヒストグラムの履歴
- 箱ひげ図の箱
- 面積プロットの「面積」
- 散布図の「散布」
バープロット
バープロットを作成して、バープロットとは何かを見てみましょう。 バープロットは次の方法で作成できます-
その*出力*は次のとおりです-
積み上げ棒グラフを作成するには、 passstacked = True -
その*出力*は次のとおりです-
水平棒グラフを取得するには、 barh メソッドを使用します-
その*出力*は次のとおりです-
ヒストグラム
ヒストグラムは、* plot.hist()*メソッドを使用してプロットできます。 ビンの数を指定できます。
その*出力*は次のとおりです-
列ごとに異なるヒストグラムをプロットするには、次のコードを使用します-
その*出力*は次のとおりです-
箱ひげ図
Boxplotは、* Series.box.plot()および DataFrame.box.plot()、または DataFrame.boxplot()*を呼び出して描画し、各列内の値の分布を視覚化できます。
たとえば、これは[0,1)上の一様なランダム変数の10回の観測の5回の試行を表す箱ひげ図です。
その*出力*は次のとおりです-
面積プロット
エリアプロットは、* Series.plot.area()または DataFrame.plot.area()*メソッドを使用して作成できます。
その*出力*は次のとおりです-
散布図
散布図は、* DataFrame.plot.scatter()*メソッドを使用して作成できます。
その*出力*は次のとおりです-
円グラフ
円グラフは、* DataFrame.plot.pie()*メソッドを使用して作成できます。
その*出力*は次のとおりです-
Pythonパンダ-IOツール
テキストファイル(またはフラットファイル)を読み取るための2つの主な機能は、* read_csv()および read_table()です。 どちらも同じ解析コードを使用して、表形式のデータを *DataFrame オブジェクトにインテリジェントに変換します-
このデータを temp.csv として保存し、操作を実行します。
このデータを temp.csv として保存し、操作を実行します。
read.csv
その*出力*は次のとおりです-
カスタムインデックス
これは、csvファイルの列を指定して、* index_col。*を使用してインデックスをカスタマイズします。
その*出力*は次のとおりです-
コンバーター
列の dtype を辞書として渡すことができます。
その*出力*は次のとおりです-
デフォルトでは、Salary列の dtype は int ですが、明示的に型をキャストしているため、結果は float として表示されます。
したがって、データはフロートのように見えます-
header_names
names引数を使用してヘッダーの名前を指定します。
その*出力*は次のとおりです-
ヘッダー名にカスタム名が追加されていますが、ファイル内のヘッダーは削除されていません。 次に、ヘッダー引数を使用してそれを削除します。
ヘッダーが最初以外の行にある場合は、行番号をヘッダーに渡します。 これにより、前の行がスキップされます。
その*出力*は次のとおりです-
スキップロウ
skiprowsは、指定された行数をスキップします。
その*出力*は次のとおりです-
Pythonパンダ-スパースデータ
スパースオブジェクトは、特定の値(NaN/欠損値、任意の値を選択できます)に一致するデータが省略されると「圧縮」されます。 特別なSparseIndexオブジェクトは、データが「スパース化」された場所を追跡します。 これは、例でより意味があります。 標準のパンダのデータ構造はすべて、 to_sparse メソッドを適用します-
その*出力*は次のとおりです-
スパースオブジェクトは、メモリ効率の理由で存在します。
あなたが大きなNA DataFrameを持っていると仮定して、次のコードを実行してみましょう-
その*出力*は次のとおりです-
任意のスパースオブジェクトは、 to_dense を呼び出すことにより、標準の高密度形式に戻すことができます-
その*出力*は次のとおりです-
スパースDtype
疎データは、その密表現と同じdtypeを持つ必要があります。 現在、 float64、int64 、および booldtypes がサポートされています。 元の dtypeに応じて、fill_value default が変更されます-
- float64 -np.nan
- int64 -0
- bool -False
同じことを理解するために次のコードを実行してみましょう-
その*出力*は次のとおりです-
Python Pandas-警告と落とし穴
警告は警告を意味し、落とし穴は目に見えない問題を意味します。
パンダでIf/Truthステートメントを使用する
Pandasは、何かを bool に変換しようとするとエラーを発生させるというnumpyの規則に従います。 これは、ブール演算を使用する if または when 、および or または not で発生します。 結果がどうあるべきかは明確ではありません。 長さがゼロではないため、Trueである必要がありますか? False値があるためFalse。 それは明確ではないので、代わりに、パンダは ValueError を発生させます-
その*出力*は次のとおりです-
その*出力*は次のとおりです-
ブールコンテキストで単一要素のパンダオブジェクトを評価するには、メソッド* .bool()*を使用します−
その*出力*は次のとおりです-
ビットごとのブール
==や! =のようなビット単位のブール演算子は、ブールシリーズを返します。これは、ほとんどの場合に必要なものです。
その*出力*は次のとおりです-
isin操作
これは、シリーズの各要素が渡された値のシーケンスに正確に含まれているかどうかを示すブールシリーズを返します。
その*出力*は次のとおりです-
再索引付けとix Gotcha
多くのユーザーは、パンダオブジェクトからデータを選択する簡潔な手段として* ixインデックス機能*を使用していることに気付くでしょう-
その*出力*は次のとおりです-
これは、もちろん、この場合 reindex メソッドを使用することと完全に同等です-
その*出力*は次のとおりです-
その*出力*は次のとおりです-
- reindexは厳密なラベルインデックスのみであることに注意することが重要です。 これにより、インデックスに整数と文字列の両方が含まれるような病理学的なケースで、驚くべき結果が生じる可能性があります。
Python Pandas-SQLとの比較
多くの潜在的なPandasユーザーはSQLにある程度精通しているため、このページはパンダを使用してさまざまなSQL操作を実行する方法の例を提供することを目的としています。
その*出力*は次のとおりです-
SELECT
SQLでは、選択は、選択した列のコンマ区切りリストを使用して行われます(またはすべての列を選択するには*)-
Pandasでは、列名のリストをDataFrameに渡すことで列の選択が行われます-
完全なプログラムを確認しましょう-
その*出力*は次のとおりです-
列名のリストなしでDataFrameを呼び出すと、すべての列が表示されます(SQLの*と同様)。
どこに
SQLでのフィルタリングはWHERE句を介して行われます。
DataFramesは複数の方法でフィルタリングできます。最も直感的なのは、ブールインデックスを使用することです。
完全なプログラムを確認しましょう-
その*出力*は次のとおりです-
上記のステートメントは、一連のTrue/FalseオブジェクトをDataFrameに渡し、すべての行をTrueで返します。
GroupBy
この操作は、データセット全体で各グループのレコード数を取得します。 たとえば、性別によって残されたヒントの数を取得するクエリ-
パンダに相当するものは-
完全なプログラムを確認しましょう-
その*出力*は次のとおりです-
上位N行
SQLは LIMIT を使用して*上位n行*を返します-
パンダに相当するものは-
完全な例を確認しましょう-
その*出力*は次のとおりです-
これらは、Pandas Libraryの前の章で学んだ、比較した数少ない基本的な操作です。