パンダのPythonの使用法
インポート
import pandas as pd
シリーズ
一連の機能は、アレイ又はリスト1つのカスタム添字(インデックス)からパンダを使用して作成され、自動的に参照インデックス一次元アレイを維持します
a = pd.Series([0.25, 0.5, 0.75, 1.0])
print(a)
b = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd']) # 自定义下标
print(b)
c = pd.Series({'a': 0.25, 'b': 0.5, 'c': 0.75, 'd': 1.0}) # 从dict创建
print(c)
'''
输出
0 0.25
1 0.50
2 0.75
3 1.00
dtype: float64
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
'''
前記指標値が、オブジェクトが反復することができるものであり、辞書などの添字としてアクセスすることができます
print(a.values)
print(b.index)
print(c['b'])
'''
输出
[0.25 0.5 0.75 1. ]
Index(['a', 'b', 'c', 'd'], dtype='object')
0.5
'''
ここではいくつかの小さなトリックです
print(b[b > 0.7] * 2)
print(c.sort_values) # 按value排序
print(b[1:3]) # 切片的下标对应的是自动维护的标号索引
'''
输出
c 1.5
d 2.0
dtype: float64
<bound method Series.sort_values of a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64>
b 0.50
c 0.75
dtype: float64
'''
それぞれ、自動保守およびILOC LOCでカスタムインデックスとインデックスラベルにアクセスするには
data = pd.Series(['a', 'b', 'c'], index=[1, 3, 5])
print(data.loc[1])
print(data.iloc[1])
'''
输出
a
b
'''
古いインデックスが削除される新しいインデックスで発生していなかった場合シリーズは、インデックスを更新することができ、新しいインデックスは古いインデックスに表示されていない場合、それはNaN(非数)が表示されます、それは行方不明を表します。
sdata = {'a': 1, 'b': 3, 'c': 5, 'd': 7}
obj1 = pd.Series(sdata)
print(obj1)
states = ['b', 'c', 'd', 'e']
obj2 = pd.Series(sdata, index=states)
print(obj2)
'''
输出
a 1
b 3
c 5
d 7
dtype: int64
b 3.0
c 5.0
d 7.0
e NaN
dtype: float64
'''
インデックスデータに基づいてシリーズは、自動的にラベル操作を揃えます
print(obj1 + obj2)
'''
输出
a NaN
b 6.0
c 10.0
d 14.0
e NaN
dtype: float64
'''
データフレーム
複数のシリーズとの組み合わせによって生成されたデータフレーム
tag1_dict = {'a': 1, 'b': 2, 'c': 3}
tag1 = pd.Series(tag1_dict)
tag2_dict = {'b': 11, 'c': 12, 'd': 13}
tag2 = pd.Series(tag2_dict)
df = pd.DataFrame({'tag1': tag1, 'tag2': tag2})
print(df)
'''
输出
tag1 tag2
a 1.0 NaN
b 2.0 11.0
c 3.0 12.0
d NaN 13.0
'''
データフレームと辞書のリストを生成します
data = [{'a': i, 'b': i * 2} for i in range(3)]
print(pd.DataFrame(data))
'''
输出
a b
0 0 0
1 1 2
2 2 4
'''
numpyのデータフレームを有する二次元アレイを生成し、行と列のインデックスをカスタマイズ
print(pd.DataFrame(np.random.rand(3, 2), columns=['a', 'b'], index=['c', 'd', 'e']))
'''
输出
a b
c 0.341337 0.379886
d 0.968444 0.595278
e 0.207694 0.440617
'''
得ます
print(df.tag1)
print(df['tag1'])
'''
输出
a 1.0
b 2.0
c 3.0
d NaN
Name: tag1, dtype: float64
a 1.0
b 2.0
c 3.0
d NaN
Name: tag1, dtype: float64
'''
新しいダイレクトを追加します
df['tag3'] = df['tag1'] + df['tag2']
print(df)
'''
输出
tag1 tag2 tag3
a 1.0 NaN NaN
b 2.0 11.0 13.0
c 3.0 12.0 15.0
d NaN 13.0 NaN
'''
為替の仲間入り
s = df.T
print(s)
'''
输出
a b c d
tag1 1.0 2.0 3.0 NaN
tag2 NaN 11.0 12.0 13.0
tag3 NaN 13.0 15.0 NaN
'''
フィルタ
print(df.loc[df.tag2 > 11, ['tag1', 'tag2']])
'''
输出
tag1 tag2
c 3.0 12.0
d NaN 13.0
'''
割り当て
df.iloc[1, 1] = 100
print(df)
'''
输出
tag1 tag2 tag3
a 1.0 NaN NaN
b 2.0 100.0 13.0
c 3.0 12.0 15.0
d NaN 13.0 NaN
'''
データフレームを直接numpyの関数に、アクションが機能に対応することが可能な全ての値
df = pd.DataFrame(np.random.randint(0, 10, (2, 3)), columns=['a', 'b', 'c'])
print(np.sin(df * np.pi / 4))
'''
输出
a b c
0 -1.0 0.707107 -1.000000
1 -1.0 0.707107 -0.707107
'''
自動インデックス作成とその補間のデータフレームの操作
df1 = pd.DataFrame(np.random.randint(0, 3, (2, 2)), columns=['a', 'b'])
df2 = pd.DataFrame(np.random.randint(0, 3, (2, 2)), columns=['b', 'c'])
print(df1 + df2)
print(df1.add(df2, fill_value=100))
'''
输出
a b c
0 NaN 3 NaN
1 NaN 2 NaN
a b c
0 100.0 3 102.0
1 101.0 2 101.0
'''
放送に対応したシリーズ、行または列で計算DATAFRAME
df = pd.DataFrame(np.random.randint(0, 10, (2, 2)), columns=['a', 'b'])
print(df)
print(df - df.iloc[1])
'''
输出
a b
0 3 8
1 4 5
a b
0 -1 3
1 0 0
'''