PadasでのDataFrame操作
1算術演算
- add(other)
たとえば、数学演算を実行し、特定の数値を追加します
data['open'].add(1)
2018-02-27 24.53
2018-02-26 23.80
2018-02-23 23.88
2018-02-22 23.25
2018-02-14 22.49
- サブ(その他) '
2論理演算
2.1論理演算記号
- たとえば、data ["open"]> 23で日付データをフィルタリングします
- data ["open"]> 23は論理結果を返します
-
data["open"] > 23 2018-02-27 True 2018-02-26 False 2018-02-23 False 2018-02-22 False 2018-02-14 False
# 逻辑判断的结果可以作为筛选的依据
data[data["open"] > 23].head()
- 複数の論理的判断を完了し、
data[(data["open"] > 23) & (data["open"] < 24)].head()
2.2論理演算関数
- query(expr)
- expr:クエリ文字列
クエリを使用して、プロセスをより便利でシンプルにします
data.query("open<24 & open>23").head()
- isin(values)
たとえば、「open」が23.53と23.85であるかどうかを判別します。
# 可以指定值进行一个判断,从而进行筛选操作
data[data["open"].isin([23.53, 23.85])]
3統計演算
3.1説明
包括的な分析:直接統計の多くを描画する能力、count
、 mean
、 std
、 min
、 max
、など
# 计算平均值、标准差、最大值、最小值
data.describe()
3.2統計関数
Numpyが詳細に紹介されました。ここでは、最小(最小)、最大(最大)、平均(平均)、中央値(中央値)、変数(分散)、標準偏差(標準偏差)、モード(モード))の結果を示します。
count |
非NA観測の数 |
---|---|
sum |
値の合計 |
mean |
値の平均 |
median |
値の算術中央値 |
min |
最小 |
max |
最大 |
mode |
モード [発生数が最も多い数] |
abs |
絶対値 |
prod |
値の積 |
std |
ベッセル補正されたサンプルの標準偏差 |
var |
不偏分散 |
idxmax |
最大のインデックスラベルを計算します |
idxmin 【最小值的索引值,不是索引】 |
最小値でインデックスラベルを計算する |
単一の関数の統計を実行する場合、行「インデックス」(軸= 1)を指定する場合、軸はデフォルトの列「列」(軸= 0、デフォルト)に従います。
- max()、min()
# 使用统计函数:0 代表列求结果, 1 代表行求统计结果
data.max(0)
open 34.99
high 36.35
close 35.21
low 34.01
volume 501915.41
price_change 3.03
p_change 10.03
turnover 12.56
my_price_change 3.41
dtype: float64
- std()、var()
# 方差
data.var(0)
open 1.545255e+01
high 1.662665e+01
close 1.554572e+01
low 1.437902e+01
volume 5.458124e+09
price_change 8.072595e-01
p_change 1.664394e+01
turnover 4.323800e+00
my_price_change 6.409037e-01
dtype: float64
# 标准差
data.std(0)
open 3.930973
high 4.077578
close 3.942806
low 3.791968
volume 73879.119354
price_change 0.898476
p_change 4.079698
turnover 2.079375
my_price_change 0.800565
dtype: float64
- median():中位数
中央値はデータを小さいものから大きいものへと並べたもので、中央の数字が中央値です。真ん中の数字がない場合は、真ん中の2つの数字の平均を取ります。
df = pd.DataFrame({'COL1' : [2,3,4,5,4,2],
'COL2' : [0,1,2,3,4,2]})
df.median()
COL1 3.5
COL2 2.0
dtype: float64
- idxmax()、idxmin()
# 求出最大值的位置
data.idxmax(axis=0)
open 2015-06-15
high 2015-06-10
close 2015-06-12
low 2015-06-12
volume 2017-10-26
price_change 2015-06-09
p_change 2015-08-28
turnover 2017-10-26
my_price_change 2015-07-10
dtype: object
# 求出最小值的位置
data.idxmin(axis=0)
open 2015-03-02
high 2015-03-02
close 2015-09-02
low 2015-03-02
volume 2016-07-06
price_change 2015-06-15
p_change 2015-09-01
turnover 2016-07-06
my_price_change 2015-06-15
dtype: object
3.3累積統計関数
関数 | 効果 |
---|---|
cumsum |
最初の1/2/3 /…/ nの数の合計を計算します |
cummax |
最初の1/2/3 /…/ n数の最大値を計算します |
cummin |
最初の1/2/3 /…/ n数の最小値を計算します |
cumprod |
最初の1/2/3 /…/ nの数の積を計算します |
では、これらの累積統計関数をどのように使用しますか?
上記の関数は、シリーズおよびデータフレームで動作できます
これが最初から最後までの時間の蓄積です
- ソート
# 排序之后,进行累计求和
data = data.sort_index()
- p_changeの合計
stock_rise = data['p_change']
# plot方法集成了前面直方图、条形图、饼图、折线图
stock_rise.cumsum()
2015-03-02 2.62
2015-03-03 4.06
2015-03-04 5.63
2015-03-05 7.65
2015-03-06 16.16
2015-03-09 16.37
2015-03-10 18.75
2015-03-11 16.36
2015-03-12 15.03
2015-03-13 17.58
2015-03-16 20.34
2015-03-17 22.42
2015-03-18 23.28
2015-03-19 23.74
2015-03-20 23.48
2015-03-23 23.74
では、この連続的な合計の結果をより適切に表示するにはどうすればよいでしょうか。
プロット関数を使用する場合は、matplotlibをインポートする必要があります。
import matplotlib.pyplot as plt
# plot显示图形
stock_rise.cumsum().plot()
# 需要调用show,才能显示出结果
plt.show()
4カスタム計算
- apply(func、axis = 0)
- func:カスタム関数
- axis = 0:デフォルトは列、axis = 1は行操作です
- 列を定義し、最大-最小関数
data[['open', 'close']].apply(lambda x: x.max() - x.min(), axis=0)
open 22.74
close 22.85
dtype: float64
5まとめ
- 算術演算
- 論理演算
- 1.論理演算記号
- 2.論理演算機能
- Object.query()
- Object.isin()
- 統計計算
- 1.Object.describe()
- 2.統計関数
- 3.累積統計関数
- カスタム計算
- apply(func、axis = 0)