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

相关文章
|
20天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
51 0
|
13天前
|
数据处理 Python
在数据科学领域,Pandas和NumPy是每位数据科学家和分析师的必备工具
在数据科学领域,Pandas和NumPy是每位数据科学家和分析师的必备工具。本文通过问题解答形式,深入探讨Pandas与NumPy的高级操作技巧,如复杂数据筛选、分组聚合、数组优化及协同工作,结合实战演练,助你提升数据处理能力和工作效率。
35 5
|
14天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
33 2
|
15天前
|
存储 数据采集 数据处理
效率与精准并重:掌握Pandas与NumPy高级特性,赋能数据科学项目
在数据科学领域,Pandas和NumPy是Python生态中处理数据的核心库。Pandas以其强大的DataFrame和Series结构,提供灵活的数据操作能力,特别适合数据的标签化和结构化处理。NumPy则以其高效的ndarray结构,支持快速的数值计算和线性代数运算。掌握两者的高级特性,如Pandas的groupby()和pivot_table(),以及NumPy的广播和向量化运算,能够显著提升数据处理速度和分析精度,为项目成功奠定基础。
26 2
|
20天前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
28 3
|
20天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2
|
21天前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
38 2
|
12天前
|
分布式计算 并行计算 大数据
Python编程中的高效数据处理技巧
Python编程中的高效数据处理技巧
31 0
|
6月前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
89 2
|
6月前
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
Pandas的`merge()`函数用于数据合并,如示例所示,根据'key'列对两个DataFrame执行内连接。`concat()`函数用于数据拼接,沿轴0(行)拼接两个DataFrame,并忽略原索引。
110 2
下一篇
无影云桌面