Pands学習ノート
4628 ワード
Pandsの2つの最も重要なデータ構造はSeriesとDataFrameであり、その約束の引用方式は以下の通りである.
Seriesは、Numpy 1次元配列に基づいてインデックスindexを追加し、インデックスを介してアクセスしたり、インデックスに基づいてデータを配置したりすることができるようにする.同じ配列で、同じSeriesのデータが同じタイプである必要があります.
Seriesのいくつかのよく使われている属性:obj.values、obj.indexはその中の値とインデックス値を調べるために用いられます.
一次元配列に基づいて構築されているので、一次元配列のスライス動作を継続することができる.
配置の簡単な例としては、2つのSeriesが数学的演算をするとき、計算はインデックスの同じ項目の間で起こり、同じ位置の項ではなく、2つのSeriesの一定の長さが同じであることが要求されません.
Data Frame
Seriesに基づいて、DataFrameはSeriesという名前を付けることによって、複数のSeriesを組み合わせて操作するデータテーブルと見なすことができます.テーブルの行のラベルは索引名で、列のラベルはSeries名で、列名とも呼ばれます.
辞書でDataFrameを作成すると、列名は自動的にアルファベット順に並べられます.
CSV読み込み:pd.read_csv('directoryCauthefile/filename.csv')
import pandas as pd
from pandas import Series, DataFrame
SeriesSeriesは、Numpy 1次元配列に基づいてインデックスindexを追加し、インデックスを介してアクセスしたり、インデックスに基づいてデータを配置したりすることができるようにする.同じ配列で、同じSeriesのデータが同じタイプである必要があります.
Seriesのいくつかのよく使われている属性:obj.values、obj.indexはその中の値とインデックス値を調べるために用いられます.
一次元配列に基づいて構築されているので、一次元配列のスライス動作を継続することができる.
In [2]:
np.random.seed(1)
s = pd.Series(np.random.randn(100))
s[2: 6]
Out[2]:
2 -0.528172
3 -1.072969
4 0.865408
5 -2.301539
dtype: float64
Seriesを作成する際にindexを指定しないと、デフォルトでは0からの整数値がインデックス値として割り当てられます.インデックス値というのは、indexインデックスを通じて該当位置の値に達することができるということです.In [3]:
obj = Series([4, 7, -5, 3], index=['d', 'a', 'b', 'c'])
obj
Out[3]:
d 4
a 7
b -5
c 3
dtype: int64
In [4]:
obj['b']
Out[4]:
-5
索引による値の割り当てと複数の値の取り込みも行います.In [5]:
obj['d'] = 8
obj[['d', 'c', 'a']]
Out[5]:
d 8
c 3
a 7
dtype: int64
そしてNumpy配列のような論理選択をサポートします.In [6]:
obj[obj > 2]
Out[6]:
d 8
a 7
c 3
dtype: int64
NumpyとPandsはデータ分析において非常に広く使われているので、両者の互換性は非常に良く、直接にNumpyの多くの方法でSeries:In [7]:
np.exp(obj)
Out[7]:
d 2980.957987
a 1096.633158
b 0.006738
c 20.085537
dtype: float64
このインデックスと値の関連関係は基本的なpythonデータ構造に反映されます.辞書のキーと値の関係に対応するので、直接辞書でSeriesを作成できます.そして作成したSeriesは辞書のキーに従って自動的に並べられます.In [8]:
states = {'ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj = Series(states)
obj
Out[8]:
Oregon 16000
Texas 71000
Utah 5000
ohio 35000
dtype: int64
Seriesを調べるために辞書に適した多くの関数を使用することもできます.In [9]:
'Utah' in obj
Out[9]:
True
インデックス以外に、Series自身とインデックス自体はname属性によって名前を指定することができます.このようにする意味は既存のデータを利用してSeriesを生成することと、異なるSeriesを使用して便利に識別することに含まれる特徴情報とは何ですか?In [10]:
obj.name = 'population'
obj.index.name = 'state'
obj
Out[10]:
state
Oregon 16000
Texas 71000
Utah 5000
ohio 35000
Name: population, dtype: int64
作成されたインデックス値は、index属性を利用して、割り当てによって変更できます.In [11]:
obj.index = ['OR', 'TX', 'UT', 'OH']
obj
Out[11]:
OR 16000
TX 71000
UT 5000
OH 35000
Name: population, dtype: int64
ここでindexを修正したら、元のindexの名前がなくなりました.配置の簡単な例としては、2つのSeriesが数学的演算をするとき、計算はインデックスの同じ項目の間で起こり、同じ位置の項ではなく、2つのSeriesの一定の長さが同じであることが要求されません.
In [13]:
s3 = pd.Series([1, 2, 3], index=['d', 'c', 'b'])
s2 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
s2 + s3
Out[13]:
a NaN
b 5.0
c 5.0
d 5.0
dtype: float64
これに対応するarrayの演算は位置によって行われ、両者の長さは同じでなければなりません.Data Frame
Seriesに基づいて、DataFrameはSeriesという名前を付けることによって、複数のSeriesを組み合わせて操作するデータテーブルと見なすことができます.テーブルの行のラベルは索引名で、列のラベルはSeries名で、列名とも呼ばれます.
辞書でDataFrameを作成すると、列名は自動的にアルファベット順に並べられます.
In [14]:
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
frame
Out[14]:
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
作成時に列ラベルの順序を指定することもできます.In [15]:
DataFrame(data, columns=['year', 'state', 'pop'])
Out[15]:
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
DataFrameが列ラベルと行ラベルを設定する重要な役割は、ラベルによって対応する列または行にアクセスできることである.In [3]:
frame['state']
Out[3]:
0 Ohio
1 Ohio
2 Ohio
3 Nevada
4 Nevada
Name: state, dtype: object
In [5]:
frame.loc[3]
Out[5]:
pop 2.4
state Nevada
year 2001
Name: 3, dtype: object
もう一つの比較的によく使われるDataFrameを作成するデータソースはネストされた辞書で、ネストされた一番外側の層のキーは列ラベルとして使用され、内側のキーは行ラベルとして使用されます.In [6]:
pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame = DataFrame(pop)
frame
Out[6]:
Nevada Ohio
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
DataFrameは同時に転置操作もできます.In [7]:
frame.T
Out[7]:
2000 2001 2002
Nevada NaN 2.4 2.9
Ohio 1.5 1.7 3.6
Pandsファイル読み書きCSV読み込み:pd.read_csv('directoryCauthefile/filename.csv')