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

相关文章
|
6天前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
115 1
|
6天前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
64 0
|
6天前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
127 0
|
6天前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
49 0
|
2月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
162 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
281 1
|
11月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
320 0
|
11月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
228 2
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
309 3
|
数据采集 数据挖掘 API
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
在Python数据分析的世界里,Pandas和NumPy无疑是两颗璀璨的明星,它们为数据科学家和工程师提供了强大而灵活的工具集,用于处理、分析和探索数据。今天,我们将一起深入探索这两个库的高级功能,看看它们如何成为数据分析的加速器。
148 1

热门文章

最新文章

推荐镜像

更多