Pythonのpandasモジュール
8430 ワード
文書ディレクトリ Pandas概要 2 Pandas取付 3 Pandas使用 3.1導入 3.2 Series 3.3 DataFrame
1 Pandas概要
1、Python Data Analysis Libraryまたはpandasは、データ分析タスクを解決するために作成されたNumPyベースのツールです.Pandasは大量のライブラリといくつかの標準的なデータモデルを組み込み、大規模なデータセットを効率的に操作するために必要なツールを提供しています.pandasは、データを迅速かつ容易に処理できる多くの関数と方法を提供しています.すぐに、Pythonを強力で効率的なデータ分析環境にする重要な要素の一つであることがわかります.
2、Pandasはpythonのデータ分析パッケージで、最初はAQR Capital Managementによって2008年4月に開発され、2009年末にオープンソースされた.現在、Pythonパケットの開発に専念しているPyData開発チームによって開発とメンテナンスを継続し、PyDataプロジェクトの一部に属している.Pandasは最初に金融データ分析ツールとして開発されたので,pandasは時間系列分析に良いサポートを提供した.Pandasの名前はパネルデータ(panel data)とpythonデータ分析(data analysis)から来ています.panel dataは経済学における多次元データセットに関する用語であり、Pandasにおいてもpanelのデータ型が提供される.
3、データ構造:Series:一次元配列、Numpyの一次元arrayと似ている.両者はPythonの基本的なデータ構造リストにも近い.違いは、リストの要素は異なるデータ型であってもよいが、ArrayとSeriesでは同じデータ型しか記憶できないことであり、メモリをより効率的に使用し、演算効率を向上させることができる.Time-Series:時間をインデックスとするSeries.DataFrame:2 Dの表型データ構造.多くの機能とRのdata.frameは似ています.DataFrameはSeriesのコンテナとして理解できます.以下の内容は主にDataFrameがメインです.Panel:3次元の配列で、DataFrameの容器と理解できます.Pandasには2つの独自の基本データ構造があります.読者が注意しなければならないのは、2つのデータ構造を持っているが、Pythonの1つのライブラリであるため、Pythonにあるデータ型はここで依然として適用され、クラスを使用して自分でデータ型を定義することもできる.ただ、Pandasでは、SeriesとDataFrameの2つのデータ型が定義されており、データ操作が簡単になります.
2 Pandas取付
pandasはpythonのサードパーティライブラリなので使う前にインストールしてそのまま使う必要があります
3 Pandas使用
jupyterの下でインタラクティブコマンドラインを使用することをお勧めします.
3.1導入
pandasモジュールをインポートし、別名を使用します.次に、今回のインポートに基づいてSeriesモジュールをインポートします.
3.2 Series
Seriesはリストのように、インデックス値に対応する一連のデータです.
Seriesは「立ち上がる」リストです.
Out[4]:
もう一つはリストに似ています.中の要素のタイプは、あなたが勝手に決めます(実は必要に応じて決めます).ここでは,当然その属性と方法があるSeriesオブジェクトを実質的に作成した.たとえば、次の2つの属性は、Seriesオブジェクトのデータ値とインデックスを順に表示します.
リストのインデックスは0から始まる整数のみで、Seriesデータ型はデフォルトではインデックスも同じです.ただし、リストとは異なり、Seriesはインデックスをカスタマイズできます.
各要素にインデックスがあり、インデックスに基づいて要素を操作できます.リストの操作を覚えていますか?Seriesにも、似たような操作があります.まず簡単に見て、インデックスに基づいて値を表示し、値を変更します.
これはdictデータに似ているのではないでしょうか.なるほど.下を見て理解しました.
読者は、前にSeriesオブジェクトを定義する際に、リスト、すなわちSeries()メソッドのパラメータを使用し、最初のリストがそのデータ値であり、indexを定義する必要がある場合は、後ろに置いてもリストであることに気づいたかどうか.この方法に加えて、Seriesオブジェクトは次の方法で定義できます.
なぜ前のdictに似ているのか理解できますか?もともとこのように定義できるからです.
この場合、インデックスはカスタマイズできます.Pandasの利点はここで現れて、もしインデックスをカスタマイズしたら、自分で決めたインデックスは自動的に元のインデックスを探して、もし同じならば、元のインデックスの対応する値を取って、これは略称して“自動位置合わせ”になります.
Pandasでは,値がなければNaNに一斉に与えられる.
Pandasは値が空かどうかを判断する専門的な方法があります.
また、Seriesオブジェクトにも同様の方法があります.
インデックスの名前は、新しい定義から定義できます.
Seriesデータについては、次のような演算を行うこともできます(演算については、後述します).
Seriesはまず簡単に書きます.pandasの別のデータ構造DataFrameを見てみましょう.
3.3 DataFrame
DataFrameは、スプレッドシートやmysqlデータベースのような2次元のデータ構造です.その縦行をcolumnsと呼び,横行は前のSeriesと同様にindexと呼ぶ,すなわちcolumnsとindexによって主文の位置を決定できる.
まずモジュールをインポートします
これは、dict定義を使用してDataFrameオブジェクトを定義する一般的な方法です.辞書の「キー」(「name」、「marks」、「price」)は、DataFrameのcolumnsの値(名前)であり、辞書の各「キー」の「値」は、その縦の列に具体的にデータが埋め込まれているリストです.上の定義ではインデックスが確定していないので、慣例(Seriesですでに形成されている慣例)では0から始まる整数である.上記の結果から明らかなように、これはexcelまたはmysqlの表示効果のような2次元のデータ構造です.
上記のデータ表示ではcolumnsの順序は規定されておらず、辞書の中のキーの順序のようになっていますが、DataFrameではcolumnsは辞書のキーと比較して明らかに異なり、その順序が規定されているので、以下のようにすることができます.
Seriesと同様、DataFrameデータのインデックスもカスタマイズ可能
DataFrameを定義する方法は、上記のほかに「辞書セット辞書」を使用することもできます.
辞書には、数列名(第1層キー)と横行インデックス(第2層辞書キー)と対応するデータ(第2層辞書値)が規定されており、つまり辞書には各データ格子のデータが規定されており、規定されていないものはすべて空である.
DataFrameオブジェクトのcolumns属性は,本来のcolumns名を表示できる.また、ある縦の列のすべての内容(もちろんインデックスも含む)を、辞書のように取得することもできます.
DataFrameオブジェクトのcolumns属性は,本来のcolumns名を表示できる.また、ある縦の列のすべての内容(もちろんインデックスも含む)を、辞書のように取得することもできます.
次の操作は、同じカラムに値を割り当てることです.
単独で値を割り当てることもでき、値を統一することができるほか、「点対点」に数値を追加し、前のSeriesと組み合わせて、DataFrameオブジェクトの縦列ごとにSeriesオブジェクトである以上、まずSeriesオブジェクトを定義し、DataFrameイメージに置くことができます.次のようになります.
もっと正確にデータを修正できますか?もちろんいいです.辞書の操作を完全に真似します.
1 Pandas概要
1、Python Data Analysis Libraryまたはpandasは、データ分析タスクを解決するために作成されたNumPyベースのツールです.Pandasは大量のライブラリといくつかの標準的なデータモデルを組み込み、大規模なデータセットを効率的に操作するために必要なツールを提供しています.pandasは、データを迅速かつ容易に処理できる多くの関数と方法を提供しています.すぐに、Pythonを強力で効率的なデータ分析環境にする重要な要素の一つであることがわかります.
2、Pandasはpythonのデータ分析パッケージで、最初はAQR Capital Managementによって2008年4月に開発され、2009年末にオープンソースされた.現在、Pythonパケットの開発に専念しているPyData開発チームによって開発とメンテナンスを継続し、PyDataプロジェクトの一部に属している.Pandasは最初に金融データ分析ツールとして開発されたので,pandasは時間系列分析に良いサポートを提供した.Pandasの名前はパネルデータ(panel data)とpythonデータ分析(data analysis)から来ています.panel dataは経済学における多次元データセットに関する用語であり、Pandasにおいてもpanelのデータ型が提供される.
3、データ構造:Series:一次元配列、Numpyの一次元arrayと似ている.両者はPythonの基本的なデータ構造リストにも近い.違いは、リストの要素は異なるデータ型であってもよいが、ArrayとSeriesでは同じデータ型しか記憶できないことであり、メモリをより効率的に使用し、演算効率を向上させることができる.Time-Series:時間をインデックスとするSeries.DataFrame:2 Dの表型データ構造.多くの機能とRのdata.frameは似ています.DataFrameはSeriesのコンテナとして理解できます.以下の内容は主にDataFrameがメインです.Panel:3次元の配列で、DataFrameの容器と理解できます.Pandasには2つの独自の基本データ構造があります.読者が注意しなければならないのは、2つのデータ構造を持っているが、Pythonの1つのライブラリであるため、Pythonにあるデータ型はここで依然として適用され、クラスを使用して自分でデータ型を定義することもできる.ただ、Pandasでは、SeriesとDataFrameの2つのデータ型が定義されており、データ操作が簡単になります.
2 Pandas取付
pandasはpythonのサードパーティライブラリなので使う前にインストールしてそのまま使う必要があります
pip install pandas # pandas 。
3 Pandas使用
jupyterの下でインタラクティブコマンドラインを使用することをお勧めします.
3.1導入
pandasモジュールをインポートし、別名を使用します.次に、今回のインポートに基づいてSeriesモジュールをインポートします.
In [1]: from pandas import Series
In [2]: import pandas as pd
3.2 Series
Seriesはリストのように、インデックス値に対応する一連のデータです.
Seriesは「立ち上がる」リストです.
In [3]: s = Series([1,4,'ww','tt'])
In [4]: s
Out[4]:
0 1
1 4
2 ww
3 tt
dtype: object
もう一つはリストに似ています.中の要素のタイプは、あなたが勝手に決めます(実は必要に応じて決めます).ここでは,当然その属性と方法があるSeriesオブジェクトを実質的に作成した.たとえば、次の2つの属性は、Seriesオブジェクトのデータ値とインデックスを順に表示します.
In [5]: s.index
Out[5]: RangeIndex(start=0, stop=4, step=1)
In [8]: s.values
Out[8]: array([1, 4, 'ww', 'tt'], dtype=object)
リストのインデックスは0から始まる整数のみで、Seriesデータ型はデフォルトではインデックスも同じです.ただし、リストとは異なり、Seriesはインデックスをカスタマイズできます.
In [9]: s2 = Series(['wangxing','man',24],index=['name','sex','age'])
In [10]: s2
Out[10]:
name wangxing
sex man
age 24
dtype: object
各要素にインデックスがあり、インデックスに基づいて要素を操作できます.リストの操作を覚えていますか?Seriesにも、似たような操作があります.まず簡単に見て、インデックスに基づいて値を表示し、値を変更します.
In [12]: s2['name']
Out[12]: 'wangxing'
In [45]: s2['name'] = 'wudadiao'
In [46]: s2
Out[46]:
name wudadiao
sex man
age 24
dtype: object
これはdictデータに似ているのではないでしょうか.なるほど.下を見て理解しました.
読者は、前にSeriesオブジェクトを定義する際に、リスト、すなわちSeries()メソッドのパラメータを使用し、最初のリストがそのデータ値であり、indexを定義する必要がある場合は、後ろに置いてもリストであることに気づいたかどうか.この方法に加えて、Seriesオブジェクトは次の方法で定義できます.
In [13]: sd = {'python':9000,'c++':9001,'c#':9000}
In [14]: s3 = Series(sd)
In [15]: s3
Out[15]:
c# 9000
c++ 9001
python 9000
dtype: int64
なぜ前のdictに似ているのか理解できますか?もともとこのように定義できるからです.
この場合、インデックスはカスタマイズできます.Pandasの利点はここで現れて、もしインデックスをカスタマイズしたら、自分で決めたインデックスは自動的に元のインデックスを探して、もし同じならば、元のインデックスの対応する値を取って、これは略称して“自動位置合わせ”になります.
In [16]: s4 = Series(sd,index=['java','c++','c#'])
In [17]: s4
Out[17]:
java NaN
c++ 9001.0
c# 9000.0
dtype: float64
Pandasでは,値がなければNaNに一斉に与えられる.
Pandasは値が空かどうかを判断する専門的な方法があります.
In [19]: pd.isnull(s4)
Out[19]:
java True
c++ False
c# False
dtype: bool
また、Seriesオブジェクトにも同様の方法があります.
In [20]: s4.isnull()
Out[20]:
java True
c++ False
c# False
dtype: bool
インデックスの名前は、新しい定義から定義できます.
In [21]: s4.index = [' ',' ','English']
In [22]: s4
Out[22]:
NaN
9001.0
English 9000.0
dtype: float64
Seriesデータについては、次のような演算を行うこともできます(演算については、後述します).
In [23]: s4 * 2
Out[23]:
NaN
18002.0
English 18000.0
dtype: float64
In [24]: s4[s4 > 9000]
Out[24]:
9001.0
dtype: float64
Seriesはまず簡単に書きます.pandasの別のデータ構造DataFrameを見てみましょう.
3.3 DataFrame
DataFrameは、スプレッドシートやmysqlデータベースのような2次元のデータ構造です.その縦行をcolumnsと呼び,横行は前のSeriesと同様にindexと呼ぶ,すなわちcolumnsとindexによって主文の位置を決定できる.
まずモジュールをインポートします
In [27]: from pandas import Series,DataFrame
In [26]: data = {"name":['google','baidu','yahoo'],"marks":[100,200,300],"price":[1,2,3]}
In [28]: f1 = DataFrame(data)
In [29]: f1
Out[29]:
marks name price
0 100 google 1
1 200 baidu 2
2 300 yahoo 3
これは、dict定義を使用してDataFrameオブジェクトを定義する一般的な方法です.辞書の「キー」(「name」、「marks」、「price」)は、DataFrameのcolumnsの値(名前)であり、辞書の各「キー」の「値」は、その縦の列に具体的にデータが埋め込まれているリストです.上の定義ではインデックスが確定していないので、慣例(Seriesですでに形成されている慣例)では0から始まる整数である.上記の結果から明らかなように、これはexcelまたはmysqlの表示効果のような2次元のデータ構造です.
上記のデータ表示ではcolumnsの順序は規定されておらず、辞書の中のキーの順序のようになっていますが、DataFrameではcolumnsは辞書のキーと比較して明らかに異なり、その順序が規定されているので、以下のようにすることができます.
In [31]: f2 = DataFrame(data,columns=['name','price','marks'])
In [32]: f2
Out[32]:
name price marks
0 google 1 100
1 baidu 2 200
2 yahoo 3 300
Seriesと同様、DataFrameデータのインデックスもカスタマイズ可能
In [35]: f3 = DataFrame(data,columns=['name','marks','price'],index=['a','b','c'])
In [36]: f3
Out[36]:
name marks price
a google 100 1
b baidu 200 2
c yahoo 300 3
DataFrameを定義する方法は、上記のほかに「辞書セット辞書」を使用することもできます.
In [40]: newdata = {'lang':{'first':'python','second':'java'},'price':{'first':5000,'second':2000}}
In [41]: f4 = DataFrame(newdata)
In [42]: f4
Out[42]:
lang price
first python 5000
second java 2000
辞書には、数列名(第1層キー)と横行インデックス(第2層辞書キー)と対応するデータ(第2層辞書値)が規定されており、つまり辞書には各データ格子のデータが規定されており、規定されていないものはすべて空である.
DataFrameオブジェクトのcolumns属性は,本来のcolumns名を表示できる.また、ある縦の列のすべての内容(もちろんインデックスも含む)を、辞書のように取得することもできます.
newdata = {"lang":{"firstline":"python","secondline":"java"}, "price":{"firstline":8000}}
f4 = DataFrame(newdata)
f4
lang price
firstline python 8000
secondline java NaN
DataFrame(newdata, index=["firstline","secondline","thirdline"])
lang price
firstline python 8000
secondline java NaN
thirdline NaN NaN
DataFrameオブジェクトのcolumns属性は,本来のcolumns名を表示できる.また、ある縦の列のすべての内容(もちろんインデックスも含む)を、辞書のように取得することもできます.
In [44]: f3['name']
Out[44]:
a google
b baidu
c yahoo
Name: name, dtype: object
次の操作は、同じカラムに値を割り当てることです.
newdata1 = {'username':{'first':'wangxing','second':'dadiao'},'age':{'first':24,'second':25}}
In [67]: f6 = DataFrame(newdata1,columns=['username','age','sex'])
In [68]: f6
Out[68]:
username age sex
first wangxing 24 NaN
second dadiao 25 NaN
In [69]: f6['sex'] = 'man'
In [70]: f6
Out[70]:
username age sex
first wangxing 24 man
second dadiao 25 man
単独で値を割り当てることもでき、値を統一することができるほか、「点対点」に数値を追加し、前のSeriesと組み合わせて、DataFrameオブジェクトの縦列ごとにSeriesオブジェクトである以上、まずSeriesオブジェクトを定義し、DataFrameイメージに置くことができます.次のようになります.
ssex = Series([' ',' '],index=['first','second'])
In [72]: f6['sex'] = ssex
In [73]: f6
Out[73]:
username age sex
first wangxing 24
second dadiao 25
もっと正確にデータを修正できますか?もちろんいいです.辞書の操作を完全に真似します.
In [74]: f6['age']['second'] = 30
In [75]: f6
Out[75]:
username age sex
first wangxing 24
second dadiao 30