Pandasデータ構造--Series(一)
Pandasデータ構造–Series
pandasには主に2つのデータ構造があり,それぞれSeriesとDataFrameである. Series:1次元配列に類似したオブジェクトで、データ(様々なNumPyデータ型)のセットと、それに関連するデータラベル(インデックス)のセットから構成されます.単純なSeriesオブジェクトは、データのセットのみで生成できます.注意:Seriesのインデックス値は繰り返し可能です. DataFrame:1つの表型のデータ構造で、1組の秩序ある列を含み、各列は異なる値タイプ(数値、文字列、ブール型など)であり、DataFrameは行インデックスも列インデックスもあり、Seriesからなる辞書と見なすことができる.
この章では、Seriesについて説明します.主に以下の点が含まれています.
文書ディレクトリ Pandasデータ構造--Series リスト作成 辞書作成 インデックス スライス 再インデックス データ演算 のソートとランキング 要約および計算記述統計 一意数、値カウント 処理欠落データ リストの作成
pandasには2つの主要なデータ構造があり、1つ目はSeriesであり、1次元配列に類似したデータ構造であり、1組のデータとそれに関連するデータラベルのセットから構成されている.リストに直接基づいてSeriesを生成することができます.
indexとvaluesプロパティでobjのインデックスと値を取得できます.
辞書の作成
ディクショナリdictでSeriesを直接作成できます.この場合、ディクショナリ>のキーがインデックスとなり、ディクショナリの値が対応する値となります.
ディクショナリとインデックスの両方を使用している場合は、ディクショナリ内のインデックスに一致する値が見つかり、対応する場所に配置されます.
索引
相対位置の下付きまたはindexでSeriesの要素にアクセスできます
スライス
下付き文字を使用したスライスとは異なり、ラベルを使用してスライスする場合、末端には次のものが含まれます.
再索引
インデックスの値を簡単に変更するのではなく、reindex関数を使用してSeriesを再インデックスできます.
reindexを使用する場合、新しいインデックスが元のデータに値がない場合、対応する値はNAになります.この場合、fill_を使用できます.valueプロパティは、データを入力します.
reindex関数にはmethodプロパティがあります.差分値の入力を行いますが、インデックスは単調に増加または単調に減少する必要があります.そのため、時間系列のような秩序化データで一般的に使用されます.
データ演算
Seriesはnumpyのいくつかの配列演算(ブール型データに基づいてフィルタリング、スカラー乗算、数学関数の適用など)を行うことができます.これらはインデックスと値の間のリンクを保持します.
Seriesは、インデックス値からデータ値へのマッピングであり、辞書パラメータを必要とする多くの関数で使用できるため、一定の長さの秩序化辞書と見なすことができます.
Seriesの最も重要な機能は、算術演算で異なるインデックスのデータを自動的に整列させることです.
ソートとランキング
sort_indexはインデックスに従ってソートし、新しいオブジェクトを返します.
sort_values列値に基づいてソート
rank関数を使用すると1つのランキング値が増加し、1から配列内の有効データの数まで、rankは平準関係に対して各グループに平均ランキングを割り当てることで平準関係を破壊し、この平均値を使用したくない場合はmethodパラメータを使用して指定した方法でrankソートを行うことができます.たとえばfirstを使用すると、元のデータに値が表示される順序で順位を割り当てることができます.
説明統計の要約と計算
Seriesではsum,mean,maxなどの方法が実装されているが,ここでは詳細に説明しないが,共分散と相関係数を求める方法を主に紹介する:Seriesのcorr法は2つのSeriesで重なる非NAのインデックスで整列した値の相関係数を計算するために用いられ,このようにcovは共分散を計算するために用いられる.
ユニーク数、値カウント
Uniqueはソートされていない一意の値配列を返し、value_counts()は各数のカウントを返す
欠落データの処理
Pandasにおける欠落値に関する方法は主に以下の3つがある:isnull法はデータが空のデータであるか否かを判断するために用いられる;fillnaメソッドは、欠落したデータを埋めるために使用されます.dropnaメソッドは、欠落したデータを破棄するために使用されます.上記の2つの方法は、元のデータに影響を与えない新しいSeriesまたはDataFrameを返します.元のデータに直接変更したい場合はinplaceパラメータを使用します.
pandasには主に2つのデータ構造があり,それぞれSeriesとDataFrameである.
この章では、Seriesについて説明します.主に以下の点が含まれています.
文書ディレクトリ
pandasには2つの主要なデータ構造があり、1つ目はSeriesであり、1次元配列に類似したデータ構造であり、1組のデータとそれに関連するデータラベルのセットから構成されている.リストに直接基づいてSeriesを生成することができます.
obj = pd.Series([4,7,-5,3])
obj
#
0 4
1 7
2 -5
3 3
dtype: int64
indexとvaluesプロパティでobjのインデックスと値を取得できます.
obj.index
#RangeIndex(start=0, stop=4, step=1)
obj.values
#array([ 4, 7, -5, 3])
0-n-1,
obj2 = pd.Series([4,7,-5,3],index=['d','b','a','c'])
obj2
#
d 4
b 7
a -5
c 3
dtype: int64
辞書の作成
ディクショナリdictでSeriesを直接作成できます.この場合、ディクショナリ>のキーがインデックスとなり、ディクショナリの値が対応する値となります.
sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
obj3 = pd.Series(sdata)
obj3
#
Ohio 35000
Oregon 16000
Texas 71000
Utah 5000
dtype: int64
ディクショナリとインデックスの両方を使用している場合は、ディクショナリ内のインデックスに一致する値が見つかり、対応する場所に配置されます.
states = ['California','Ohio','Texas','Oregon']
obj4 = pd.Series(sdata,index = states)
obj4
#
California NaN
Ohio 35000.0
Texas 71000.0
Oregon 16000.0
dtype: float64
索引
相対位置の下付きまたはindexでSeriesの要素にアクセスできます
obj2[2]
#-5
obj2['a']
#-5
obj2[\['a','b','d']]
#
a -5
b 7
d 4
dtype: int64
スライス
下付き文字を使用したスライスとは異なり、ラベルを使用してスライスする場合、末端には次のものが含まれます.
obj['b':'c']
#
b 1.0
c 2.0
dtype: float64
再索引
インデックスの値を簡単に変更するのではなく、reindex関数を使用してSeriesを再インデックスできます.
obj2 = pd.Series([4,7,-5,3],index=['d','b','a','c'])
obj3 = obj2.reindex(['a','b','c','d','e'])
obj3
#
a -5.0
b 7.0
c 3.0
d 4.0
e NaN
dtype: float64
reindexを使用する場合、新しいインデックスが元のデータに値がない場合、対応する値はNAになります.この場合、fill_を使用できます.valueプロパティは、データを入力します.
obj4 = obj2.reindex(['a','b','c','d','e'],fill_value=0)
obj4
#
a -5
b 7
c 3
d 4
e 0
dtype: int64
reindex関数にはmethodプロパティがあります.差分値の入力を行いますが、インデックスは単調に増加または単調に減少する必要があります.そのため、時間系列のような秩序化データで一般的に使用されます.
# obj5 = obj2.reindex(['a','b','c','d','e'],method='ffill')
obj3 = pd.Series(['blue','Purple','yellow'],index = [0,2,4])
obj3.reindex(range(6),method='ffill')
#
0 blue
1 blue
2 Purple
3 Purple
4 yellow
5 yellow
dtype: object
データ演算
Seriesはnumpyのいくつかの配列演算(ブール型データに基づいてフィルタリング、スカラー乗算、数学関数の適用など)を行うことができます.これらはインデックスと値の間のリンクを保持します.
np.exp(obj2)
#
d 54.598150
b 1096.633158
a 0.006738
c 20.085537
dtype: float64
Seriesは、インデックス値からデータ値へのマッピングであり、辞書パラメータを必要とする多くの関数で使用できるため、一定の長さの秩序化辞書と見なすことができます.
b' in obj2
#True
Seriesの最も重要な機能は、算術演算で異なるインデックスのデータを自動的に整列させることです.
obj3 + obj4
#
California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN
dtype: float64
ソートとランキング
sort_indexはインデックスに従ってソートし、新しいオブジェクトを返します.
obj = pd.Series(range(4),index=['d','a','b','c'])
obj.sort_index()
# :
a 1
b 2
c 3
d 0
dtype: int64
sort_values列値に基づいてソート
obj.sort_values()
# :
d 0
a 1
b 2
c 3
dtype: int64
rank関数を使用すると1つのランキング値が増加し、1から配列内の有効データの数まで、rankは平準関係に対して各グループに平均ランキングを割り当てることで平準関係を破壊し、この平均値を使用したくない場合はmethodパラメータを使用して指定した方法でrankソートを行うことができます.たとえばfirstを使用すると、元のデータに値が表示される順序で順位を割り当てることができます.
obj = pd.Series([7,-5,7,4,2,0,4])
obj.rank()
# :
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64
obj.rank(method='first')
#
0 6.0
1 1.0
2 7.0
3 4.0
4 3.0
5 2.0
6 5.0
dtype: float64
説明統計の要約と計算
Seriesではsum,mean,maxなどの方法が実装されているが,ここでは詳細に説明しないが,共分散と相関係数を求める方法を主に紹介する:Seriesのcorr法は2つのSeriesで重なる非NAのインデックスで整列した値の相関係数を計算するために用いられ,このようにcovは共分散を計算するために用いられる.
obj1 = pd.Series(np.arange(10),index = list('abcdefghij'))
obj2 = pd.Series(np.arange(12),index = list('cdefghijklmn'))
obj1.corr(obj2)
#1.0
obj1.cov(obj2)
#6.0
ユニーク数、値カウント
Uniqueはソートされていない一意の値配列を返し、value_counts()は各数のカウントを返す
obj = pd.Series(['c','a','d','a','a','b','b','c','c'])
uniques = obj.unique()
uniques
#array(['c', 'a', 'd', 'b'], dtype=object)
#value_counts()
obj.value_counts()
#
a 3
c 3
b 2
d 1
dtype: int64
欠落データの処理
Pandasにおける欠落値に関する方法は主に以下の3つがある:isnull法はデータが空のデータであるか否かを判断するために用いられる;fillnaメソッドは、欠落したデータを埋めるために使用されます.dropnaメソッドは、欠落したデータを破棄するために使用されます.上記の2つの方法は、元のデータに影響を与えない新しいSeriesまたはDataFrameを返します.元のデータに直接変更したい場合はinplaceパラメータを使用します.
data = pd.Series([1,np.nan,3.5,np.nan,7])
data.fillna(0)
#
0 1.0
1 0.0
2 3.5
3 0.0
4 7.0
dtype: float64