【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(4)

1. 删除所有存在缺失值的行

  • 语法:

    • df.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
  • 参数:

    • axis : {0 or ‘index’, 1 or ‘columns’}, default 0

      • 0, or ‘index’:删除包含丢失值的行 1, or ‘columns’:删除包含丢失值的列
      • 默认为0
    • how : {‘any’, ‘all’}, default ‘any’

      • ‘any’: 如果存在NA值,则删除该行或列

      • ‘all’: 如果所有值都是NA,则删除该行或列

    • thresh: int,保留含有int个非空值的行

    • subset: 对特定的列进行缺失值删除处理

  • 不同情况参数设置:

    • 删除所有有缺失值的行

      • df.dropna()
    • 删除所有有缺失值的列

      • df.dropna(axis=‘columns’)
      • df.dropna(axis=1)
    • 删除所有值缺失的行

      • df.dropna(how=‘all’)
    • 删除至少有两个非缺失值的行

      • df.dropna(thresh=2)
    • 指定判断缺失值的列范围

      • df.dropna(subset=[‘name’, ‘born’])
    • 使删除和的结果生效

      • df.dropna(inplace=True)
    • 指定列的缺失值删除

      • df.toy.dropna()

2. 重置data的行号

data = data.reset_index()

3.设置日期为索引

data = data.set_index('日期')

4. 以5个数据作为一个数据滑动窗口,在这5个数据上取均值(收盘价)

data['收盘价(元)'].rolling(5).mean()
日期
2016-01-04         NaN
2016-01-05         NaN
2016-01-06         NaN
2016-01-07         NaN
2016-01-08    15.69578
2016-01-11    15.56330
2016-01-12    15.47322
2016-01-13    15.34780
2016-01-14    15.42022
2016-01-15    15.43612
2016-01-18    15.54740
2016-01-19    15.60392
2016-01-20    15.57920
2016-01-21    15.34250
2016-01-22    15.24358
2016-01-25    15.12878
2016-01-26    14.93272
2016-01-27    14.83204
2016-01-28    14.83204
2016-01-29    14.81086
2016-02-01    14.71724
2016-02-02    14.73490
2016-02-03    14.72252
2016-02-04    14.84970
2016-02-05    15.11112
2016-02-15    15.45556
2016-03-11    15.49266
2016-03-14    15.53682
2016-03-15    15.48736
2016-03-16    15.42552
                ...   
2017-03-24    15.95200
2017-03-27    15.93200
2017-03-28    15.93400
2017-03-29    15.95200
2017-03-30    15.93800
2017-03-31    15.94800
2017-04-05    15.97200
2017-04-06    15.99000
2017-04-07    16.03600
2017-04-10    16.06800
2017-04-11    16.04400
2017-04-12    15.99000
2017-04-13    15.92000
2017-04-14    15.80200
2017-04-17    15.72000
2017-04-18    15.60200
2017-04-19    15.44600
2017-04-20    15.27800
2017-04-21    15.18600
2017-04-24    15.07400
2017-04-25    15.02400
2017-04-26    15.01200
2017-04-27    15.07200
2017-04-28    15.10400
2017-05-02    15.13600
2017-05-03    15.14200
2017-05-04    15.12800
2017-05-05    15.07000
2017-05-08    15.00000
2017-05-09    14.92000
Name: 收盘价(元), Length: 309, dtype: float64

将数据往后移动5天

data.shift(5)
index 代码 简称 前收盘价(元) 开盘价(元) 最高价(元) 最低价(元) 收盘价(元) 成交量(股) 成交金额(元) 涨跌(元) 涨跌幅(%) 均价(元) 换手率(%) A股流通市值(元) 总市值(元) A股流通股本(股) 市盈率
日期
2016-01-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-01-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-01-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-01-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-01-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-01-11 0.0 600000.SH 浦发银行 16.1356 16.1444 16.1444 15.4997 15.7205 42240610 754425783 -0.4151 -2.5725 17.8602 0.2264 3.320318e+11 3.320318e+11 1.865347e+10 6.5614
2016-01-12 1.0 600000.SH 浦发银行 15.7205 15.4644 15.9501 15.3672 15.8618 58054793 1034181474 0.1413 0.8989 17.8139 0.3112 3.350163e+11 3.350163e+11 1.865347e+10 6.6204
2016-01-13 2.0 600000.SH 浦发银行 15.8618 15.8088 16.0208 15.6234 15.9855 46772653 838667398 0.1236 0.7795 17.9307 0.2507 3.376278e+11 3.376278e+11 1.865347e+10 6.6720
2016-01-14 3.0 600000.SH 浦发银行 15.9855 15.7205 15.8088 15.3672 15.4644 11350479 199502702 -0.5211 -3.2597 17.5766 0.0608 3.266223e+11 3.266223e+11 1.865347e+10 6.4545
2016-01-15 4.0 600000.SH 浦发银行 15.4644 15.6675 15.7912 14.9345 15.4467 71918296 1262105060 -0.0177 -0.1142 17.5492 0.3855 3.262492e+11 3.262492e+11 1.865347e+10 6.4471
2016-01-18 5.0 600000.SH 浦发银行 15.4467 15.1994 15.4114 14.9786 15.0581 90177135 1550155933 -0.3886 -2.5157 17.1901 0.4834 3.180417e+11 3.180417e+11 1.865347e+10 6.2849
2016-01-19 6.0 600000.SH 浦发银行 15.0581 15.1641 15.4732 15.0846 15.4114 55374454 964061502 0.3533 2.3460 17.4099 0.2969 3.255031e+11 3.255031e+11 1.865347e+10 6.4324
2016-01-20 7.0 600000.SH 浦发银行 15.4114 15.5174 15.8088 15.3231 15.3584 47869312 843717365 -0.0530 -0.3438 17.6254 0.2566 3.243839e+11 3.243839e+11 1.865347e+10 6.4102
2016-01-21 8.0 600000.SH 浦发银行 15.3584 15.0140 15.8883 14.9168 15.8265 54838833 966117848 0.4681 3.0477 17.6174 0.294 3.342702e+11 3.342702e+11 1.865347e+10 6.6056
2016-01-22 9.0 600000.SH 浦发银行 15.8265 15.7205 16.0296 15.4732 15.5262 46723139 836146426 -0.3003 -1.8973 17.8958 0.2505 3.279280e+11 3.279280e+11 1.865347e+10 6.4803
2016-01-25 10.0 600000.SH 浦发银行 15.5262 15.3937 15.8883 15.2966 15.6145 32729006 583291559 0.0883 0.5688 17.8219 0.1755 3.297934e+11 3.297934e+11 1.865347e+10 6.5171
2016-01-26 11.0 600000.SH 浦发银行 15.6145 15.7029 15.7912 15.4556 15.6940 29807159 527753175 0.0795 0.5090 17.7056 0.1598 3.314722e+11 3.314722e+11 1.865347e+10 6.5503
2016-01-27 12.0 600000.SH 浦发银行 15.6940 15.5527 15.6322 15.0846 15.2348 35968636 623546924 -0.4593 -2.9263 17.3359 0.1928 3.217724e+11 3.217724e+11 1.865347e+10 6.3586
2016-01-28 13.0 600000.SH 浦发银行 15.2348 15.2083 15.4202 14.5724 14.6430 34197115 582845476 -0.5917 -3.8841 17.0437 0.1833 3.092746e+11 3.092746e+11 1.865347e+10 6.1117
2016-01-29 14.0 600000.SH 浦发银行 14.6430 14.8727 15.1111 14.5636 15.0316 42007318 708179241 0.3886 2.6538 16.8585 0.2252 3.174821e+11 3.174821e+11 1.865347e+10 6.2739
2016-02-01 15.0 600000.SH 浦发银行 15.0316 15.0140 15.1641 14.7667 15.0405 23558971 400445071 0.0088 0.0588 16.9976 0.1263 3.176686e+11 3.176686e+11 1.865347e+10 6.2775
2016-02-02 16.0 600000.SH 浦发银行 15.0405 14.9786 15.1376 14.4841 14.7137 38279766 643611762 -0.3268 -2.1726 16.8134 0.2052 3.107668e+11 3.107668e+11 1.865347e+10 6.1412
2016-02-03 17.0 600000.SH 浦发银行 14.7137 14.7932 14.9963 14.5812 14.7314 44291307 742640743 0.0177 0.1200 16.7672 0.2374 3.111399e+11 3.111399e+11 1.865347e+10 6.1485
2016-02-04 18.0 600000.SH 浦发银行 14.7314 14.8020 14.8550 14.0248 14.6430 38902180 643984171 -0.0883 -0.5995 16.5539 0.2086 3.092746e+11 3.092746e+11 1.865347e+10 6.1117
2016-02-05 19.0 600000.SH 浦发银行 14.6430 14.5901 15.0581 14.4929 14.9257 47429000 799493381 0.2826 1.9300 16.8566 0.2543 3.152437e+11 3.152437e+11 1.865347e+10 6.2296
2016-02-15 20.0 600000.SH 浦发银行 14.9257 15.0051 15.0140 14.4929 14.5724 29139596 485275132 -0.3533 -2.3669 16.6535 0.1562 3.077823e+11 3.077823e+11 1.865347e+10 6.0822
2016-03-11 21.0 600000.SH 浦发银行 14.5724 14.5724 14.9610 14.5371 14.8020 25380981 425396889 0.2296 1.5758 16.7605 0.1361 3.126322e+11 3.126322e+11 1.865347e+10 6.1780
2016-03-14 22.0 600000.SH 浦发银行 14.8020 14.6607 14.7137 14.5282 14.6695 27779183 459255616 -0.1325 -0.8950 16.5324 0.1489 3.098342e+11 3.098342e+11 1.865347e+10 6.1227
2016-03-15 23.0 600000.SH 浦发银行 14.6695 14.8727 15.2966 14.6872 15.2789 47162860 799283799 0.6094 4.1541 16.9473 0.2528 3.227051e+11 3.227051e+11 1.865347e+10 6.3771
2016-03-16 24.0 600000.SH 浦发银行 15.2789 15.2259 16.2416 15.1465 16.2328 78413454 1401156041 0.9538 6.2428 17.8688 0.4204 3.428508e+11 3.428508e+11 1.865347e+10 6.7752
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-03-24 292.0 600000.SH 浦发银行 16.2900 16.3000 16.3200 16.1400 16.2000 21560354 350179470 -0.0900 -0.5525 16.2418 0.1051 3.324049e+11 3.502161e+11 2.051882e+10 6.5955
2017-03-27 293.0 600000.SH 浦发银行 16.2000 16.2400 16.2500 16.1300 16.1400 15017806 242775930 -0.0600 -0.3704 16.1659 0.0695 3.489190e+11 3.489190e+11 2.161828e+10 6.5711
2017-03-28 294.0 600000.SH 浦发银行 16.1400 16.1500 16.1600 15.9800 16.0000 31124617 499206643 -0.1400 -0.8674 16.039 0.144 3.458925e+11 3.458925e+11 2.161828e+10 6.5141
2017-03-29 295.0 600000.SH 浦发银行 16.0000 15.9800 15.9800 15.7000 15.7800 43811429 691677895 -0.2200 -1.3750 15.7876 0.2027 3.411365e+11 3.411365e+11 2.161828e+10 6.4245
2017-03-30 296.0 600000.SH 浦发银行 15.7800 15.8000 15.9200 15.7900 15.8800 22225660 352635979 0.1000 0.6337 15.8662 0.1028 3.432983e+11 3.432983e+11 2.161828e+10 6.4652
2017-03-31 297.0 600000.SH 浦发银行 15.8800 15.8500 16.0000 15.8300 15.9600 19902006 316984958 0.0800 0.5038 15.9273 0.0921 3.450277e+11 3.450277e+11 2.161828e+10 6.4978
2017-04-05 298.0 600000.SH 浦发银行 15.9600 15.9700 16.1300 15.9000 16.0400 18997369 304990151 0.0800 0.5013 16.0543 0.0879 3.467572e+11 3.467572e+11 2.161828e+10 6.5304
2017-04-06 299.0 600000.SH 浦发银行 16.0400 16.1100 16.1300 15.9700 16.0100 13212969 211750766 -0.0300 -0.1870 16.026 0.0611 3.461087e+11 3.461087e+11 2.161828e+10 6.5182
2017-04-07 300.0 600000.SH 浦发银行 16.0100 16.0100 16.1100 15.8000 15.8700 23446792 372794465 -0.1400 -0.8745 15.8996 0.1085 3.430821e+11 3.430821e+11 2.161828e+10 6.4612
2017-04-10 301.0 600000.SH 浦发银行 15.8700 15.8800 15.9000 15.7200 15.8100 23645144 373665115 -0.0600 -0.3781 15.803 0.1094 3.417850e+11 3.417850e+11 2.161828e+10 6.4368
2017-04-11 302.0 600000.SH 浦发银行 15.8100 15.7800 16.0500 15.7700 16.0100 24187120 385793421 0.2000 1.2650 15.9504 0.1119 3.461087e+11 3.461087e+11 2.161828e+10 6.5182
2017-04-12 303.0 600000.SH 浦发银行 16.0100 16.0500 16.2000 15.8900 16.1600 31036271 499121565 0.1500 0.9369 16.0819 0.1436 3.493514e+11 3.493514e+11 2.161828e+10 6.5792
2017-04-13 304.0 600000.SH 浦发银行 16.1600 16.0900 16.1800 16.0300 16.1000 22335442 359361840 -0.0600 -0.3713 16.0893 0.1033 3.480543e+11 3.480543e+11 2.161828e+10 6.5548
2017-04-14 305.0 600000.SH 浦发银行 16.1000 16.0600 16.1600 16.0200 16.1000 20126948 323821647 0.0000 0.0000 16.089 0.0931 3.480543e+11 3.480543e+11 2.161828e+10 6.5548
2017-04-17 306.0 600000.SH 浦发银行 16.1000 16.1200 16.1200 15.9400 15.9700 16154024 258662668 -0.1300 -0.8075 16.0123 0.0747 3.452439e+11 3.452439e+11 2.161828e+10 6.5019
2017-04-18 307.0 600000.SH 浦发银行 15.9700 15.9700 15.9900 15.8100 15.8900 18611375 295381671 -0.0800 -0.5009 15.871 0.0861 3.435145e+11 3.435145e+11 2.161828e+10 6.4693
2017-04-19 308.0 600000.SH 浦发银行 15.8900 15.8800 15.9600 15.7500 15.8900 22210541 352357729 0.0000 0.0000 15.8644 0.1027 3.435145e+11 3.435145e+11 2.161828e+10 6.4693
2017-04-20 309.0 600000.SH 浦发银行 15.8900 15.8800 15.8900 15.7300 15.7500 23426650 369388222 -0.1400 -0.8811 15.7679 0.1084 3.404879e+11 3.404879e+11 2.161828e+10 6.4123
2017-04-21 310.0 600000.SH 浦发银行 15.7500 15.7600 15.7800 15.4200 15.5100 40156553 625510632 -0.2400 -1.5238 15.5768 0.1858 3.352995e+11 3.352995e+11 2.161828e+10 6.3146
2017-04-24 311.0 600000.SH 浦发银行 15.5100 15.5300 15.6000 15.3000 15.5600 36739448 566536789 0.0500 0.3224 15.4204 0.1699 3.363804e+11 3.363804e+11 2.161828e+10 6.3350
2017-04-25 312.0 600000.SH 浦发银行 15.5600 15.5000 15.5200 15.3000 15.3000 22889980 351624622 -0.2600 -1.6710 15.3615 0.1059 3.307597e+11 3.307597e+11 2.161828e+10 6.2291
2017-04-26 313.0 600000.SH 浦发银行 15.3000 15.2500 15.2700 15.1100 15.1100 24455407 371021507 -0.1900 -1.2418 15.1713 0.1131 3.266522e+11 3.266522e+11 2.161828e+10 6.1518
2017-04-27 314.0 600000.SH 浦发银行 15.1100 15.1200 15.1400 14.9000 14.9100 41061406 614436383 -0.2000 -1.3236 14.9638 0.1899 3.223286e+11 3.223286e+11 2.161828e+10 6.0703
2017-04-28 315.0 600000.SH 浦发银行 14.9100 14.9200 15.0700 14.8500 15.0500 22688358 340453104 0.1400 0.9390 15.0056 0.1049 3.253551e+11 3.253551e+11 2.161828e+10 6.1273
2017-05-02 316.0 600000.SH 浦发银行 15.0500 15.0500 15.1100 14.9100 15.0000 17627803 264649933 -0.0500 -0.3322 15.0132 0.0815 3.242742e+11 3.242742e+11 2.161828e+10 6.1070
2017-05-03 317.0 600000.SH 浦发银行 15.0000 15.0200 15.1000 14.9900 15.0500 12975919 195296862 0.0500 0.3333 15.0507 0.06 3.253551e+11 3.253551e+11 2.161828e+10 6.1273
2017-05-04 318.0 600000.SH 浦发银行 15.0500 15.0600 15.1100 15.0000 15.0500 14939871 225022668 0.0000 0.0000 15.0619 0.0691 3.253551e+11 3.253551e+11 2.161828e+10 6.1273
2017-05-05 319.0 600000.SH 浦发银行 15.0500 15.0500 15.2500 15.0300 15.2100 22887645 345791526 0.1600 1.0631 15.1082 0.1059 3.288140e+11 3.288140e+11 2.161828e+10 6.1925
2017-05-08 320.0 600000.SH 浦发银行 15.2100 15.1500 15.2200 15.0800 15.2100 15718509 238419161 0.0000 0.0000 15.1681 0.0727 3.288140e+11 3.288140e+11 2.161828e+10 6.1925
2017-05-09 321.0 600000.SH 浦发银行 15.2100 15.2100 15.2200 15.1300 15.1600 12607509 191225527 -0.0500 -0.3287 15.1676 0.0583 3.277331e+11 3.277331e+11 2.161828e+10 6.1721

309 rows × 18 columns

作业

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns

data = pd.read_excel('/home/mw/input/pandas1206855/600000.SH.xls')

# 删除空值
data.dropna(axis=0, how='any', inplace=True)

# 删除非数值行
tmp = []
for i in range(len(data)):
    if type(data.loc[i, '换手率(%)']) != float:
        tmp.append(i)
data.drop(labels=tmp, inplace=True)

# 重置索引,并设置新index
data = data.reset_index()
data = data.set_index('日期')

# STEP1: 按照以下要求计算结果
# 1. 将数据往前移动5天 !注意此处!第25步往后移动5天!

# data = data.shift(-5)   # 第25步操作
# data = data.shift(-5)   # 第一题操作

# 2. 使用expanding函数计算开盘价的移动窗口均值

meta_mean_sta = data['开盘价(元)']
exp_mean_sta = data['开盘价(元)'].expanding(min_periods=1, center=False, axis=0).mean()
plot_df1_mean = pd.concat([meta_mean_sta, exp_mean_sta], axis=1, ignore_index=True)
plot_df1_mean = plot_df1_mean.rename(columns={
    
    0: '原始数据',
                                              1: '移动窗口均值'})

# 3. 绘制上一题的移动均值与原始数据折线图

# plt.rc('figure', figsize=(16, 6), dpi=150)
# plt.plot(plot_df1_mean['原始数据'])
# plt.plot(plot_df1_mean['移动窗口均值'])
# plt.show()

# 4. 计算布林指标

N = 20  # 布林线指标的参数最好设为20

# 第一步:计算MA 移动平均线

ma = data['收盘价(元)'].rolling(N).mean()

# 第二步:计算标准差MD

md = data['收盘价(元)'].rolling(N).std()

# 第三步:计算MB、UP、DN线 分别对应 中轨线 上轨线 下轨线

mb = ma
up = mb + (md * 2)
dn = mb - (md * 2)

# 5. 计算布林线并绘制

plt.rc('figure', figsize=(16, 6), dpi=150)
plt.plot(ma, color='blue')
plt.plot(up, color='red')
plt.plot(dn, color='g')
#plt.show()

# STEP2: 为了简化最终提交的行数,所以这里只需要保留上轨线UP这一字段即可,并保存为 csv 文件

dic = {
    
    '上轨线': up}
df = pd.DataFrame(dic).reset_index(drop=True)
df = df.round(2)
df.columns = ['answer']
df.dropna(axis=0, how='any', inplace=True)
df['id'] = range(len(df))
df = df[['id', 'answer']]

df.to_csv('answer_4.csv', index=False, encoding='utf-8-sig')

收获

身体不适,没有收获,草草了事。

猜你喜欢

转载自blog.csdn.net/qq_25218219/article/details/129662631