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

简介: 【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
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

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')

相关文章
|
5天前
|
存储 索引 Python
Python学习笔记----列表、元组和字典的基础操作
这篇文章是一份Python学习笔记,涵盖了列表、元组和字典的基础操作,包括它们的创建、修改、删除、内置函数和方法等。
Python学习笔记----列表、元组和字典的基础操作
|
2天前
|
XML 程序员 数据格式
豆瓣评分8.6!Python社区出版的Python故事教程,太强了!
Python 是活力四射的语言,是不断发展中的语言。就连使用 Python 多年的行者也不敢说对 Python 的方方面面都了解并可以自由运用,想必读者可能更加无法快速掌握所有重点技巧了。 今天给小伙伴们分享的这份手册是用互动的开发故事来探讨Pyfhonic开发的故事书籍,是一本Python语言详解书籍,由Python的行者根据自身经验组织而成,是为从来没有听说过Python的其他语言程序员准备的一份实用的导学性质的书,笔者试图将优化后的学习体验,通过故事的方式传达给读者。对于零基础的小白来说更建议入门后再来品读。
|
3天前
|
存储 缓存 索引
Python中的NumPy库详解
Python中的NumPy库详解
|
4天前
|
机器学习/深度学习 数据可视化 API
Python Numpy 切片和索引(高级索引、布尔索引、花式索引)
Python Numpy 切片和索引(高级索引、布尔索引、花式索引)
15 3
|
4天前
|
索引 Python
Python NumPy 广播(Broadcast)
Python NumPy 广播(Broadcast)
14 2
|
6天前
|
数据采集 数据挖掘 数据处理
Python数据分析:Numpy、Pandas高级
在上一篇博文中,我们介绍了Python数据分析中NumPy和Pandas的基础知识。本文将深入探讨NumPy和Pandas的高级功能,并通过一个综合详细的例子展示这些高级功能的应用。
|
5天前
|
Python
Python学习笔记---函数
这篇文章是一份Python函数学习的笔记,涵盖了使用函数的优势、内置函数的调用、自定义函数的定义、函数参数的不同类型(必须参数、关键字参数、默认参数、可变参数)、有返回值和无返回值的函数、形参和实参、变量作用域、返回函数、递归函数、匿名函数、偏函数以及输入和输出函数等多个函数相关的主题。
|
5天前
|
索引 Python
Python学习笔记----操作字符串
这篇文章是一份Python字符串操作的学习笔记,涵盖了字符串相加、序列相加、字符串长度和字符的查找、统计、分割、连接、替换、去除空白、大小写转换以及判断字符串是否由字母和数字组成等常用方法。
Python学习笔记----操作字符串
|
5天前
|
Python
python学习笔记---流程控制
这篇文章详细介绍了Python中的流程控制,包括选择结构(if、if-else语句、嵌套if语句)和循环语句(while循环、for循环以及for循环与range()函数的使用),以及如何在循环中使用break和continue语句。
python学习笔记---流程控制
|
5天前
|
索引 Python
python学习笔记----必备知识
这篇文章是一份全面的Python学习笔记,涵盖了Python的必备知识,包括语法特点、流程控制、数据类型、运算符、输入输出方法,以及对序列、字符串、正则表达式、函数、面向对象程序设计、模块和包的介绍。
python学习笔记----必备知识