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

相关文章
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
384 0
|
4月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
455 1
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
576 0
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
280 0
|
6月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
538 0
|
5月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
503 102
|
5月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
398 104
|
5月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
307 103
|
5月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
248 82
|
4月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
350 3

热门文章

最新文章

推荐镜像

更多