【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 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
487 0
|
6月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
556 1
|
6月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
664 0
|
6月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
350 0
|
10月前
|
测试技术 数据处理 Python
Python列表推导式:简洁高效的数据处理利器
Python列表推导式:简洁高效的数据处理利器
448 80
|
8月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
667 0
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
369 1
|
人工智能 分布式计算 数据处理
有奖评测,基于分布式 Python 计算服务 MaxFrame 进行数据处理
阿里云MaxCompute MaxFrame推出分布式Python计算服务MaxFrame评测活动,助力开发者高效完成大规模数据处理、可视化探索及ML/AI开发。活动时间为2024年12月17日至2025年1月31日,参与者需体验MaxFrame并发布评测文章,有机会赢取精美礼品。
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。

推荐镜像

更多