Pandas的基本数据操作
读取一个真实的股票数据
import pandas as pd
# 读取文件
data = pd.read_csv("./data/stock_day.csv") # 删除一些列,让数据更简单些,再去做后面的操作
data = data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"], axis=1) #删除,如果要对行“index” 需要指定(axis=1)data
open | high | close | low | volume | price_change | p_change | turnover | |
---|---|---|---|---|---|---|---|---|
2018-02-27 | 23.53 | 25.88 | 24.16 | 23.53 | 95578.03 | 0.63 | 2.68 | 2.39 |
2018-02-26 | 22.80 | 23.78 | 23.53 | 22.80 | 60985.11 | 0.69 | 3.02 | 1.53 |
2018-02-23 | 22.88 | 23.37 | 22.82 | 22.71 | 52914.01 | 0.54 | 2.42 | 1.32 |
2018-02-22 | 22.25 | 22.76 | 22.28 | 22.02 | 36105.01 | 0.36 | 1.64 | 0.90 |
2018-02-14 | 21.49 | 21.99 | 21.92 | 21.48 | 23331.04 | 0.44 | 2.05 | 0.58 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
2015-03-06 | 13.17 | 14.48 | 14.28 | 13.13 | 179831.72 | 1.12 | 8.51 | 6.16 |
2015-03-05 | 12.88 | 13.45 | 13.16 | 12.87 | 93180.39 | 0.26 | 2.02 | 3.19 |
2015-03-04 | 12.80 | 12.92 | 12.90 | 12.61 | 67075.44 | 0.20 | 1.57 | 2.30 |
2015-03-03 | 12.52 | 13.06 | 12.70 | 12.52 | 139071.61 | 0.18 | 1.44 | 4.76 |
2015-03-02 | 12.25 | 12.67 | 12.52 | 12.20 | 96291.73 | 0.32 | 2.62 | 3.30 |
643 rows × 8 columns
读取前五行
data.head() #默认获取前五行
open | high | close | low | volume | price_change | p_change | turnover | |
---|---|---|---|---|---|---|---|---|
2018-02-27 | 23.53 | 25.88 | 24.16 | 23.53 | 95578.03 | 0.63 | 2.68 | 2.39 |
2018-02-26 | 22.80 | 23.78 | 23.53 | 22.80 | 60985.11 | 0.69 | 3.02 | 1.53 |
2018-02-23 | 22.88 | 23.37 | 22.82 | 22.71 | 52914.01 | 0.54 | 2.42 | 1.32 |
2018-02-22 | 22.25 | 22.76 | 22.28 | 22.02 | 36105.01 | 0.36 | 1.64 | 0.90 |
2018-02-14 | 21.49 | 21.99 | 21.92 | 21.48 | 23331.04 | 0.44 | 2.05 | 0.58 |
1、索引操作
直接使用行列索引(先列后行)
获取'2018-02-27'这天的'close'的结果
data['open']['2018-02-27'] #先列后行
#23.53# 不支持的操作
# 错误
data['2018-02-27']['open']
# 错误
data[:1, :2]
结合loc或者iloc使用索引
获取从'2018-02-27':'2018-02-22','open'的结果
# 使用loc:只能指定行列索引的名字
data.loc['2018-02-27':'2018-02-22', 'open']
'''
2018-02-27 23.53
2018-02-26 22.80
2018-02-23 22.88
2018-02-22 22.25
Name: open, dtype: float64
'''
# 使用iloc可以通过索引的下标去获取
# 获取前3天数据,前5列的结果
data.iloc[:3, :5]
open | high | close | low | volume | |
---|---|---|---|---|---|
2018-02-27 | 23.53 | 25.88 | 24.16 | 23.53 | 95578.03 |
2018-02-26 | 22.80 | 23.78 | 23.53 | 22.80 | 60985.11 |
2018-02-23 | 22.88 | 23.37 | 22.82 | 22.71 | 52914.01 |
使用loc和iloc来获取的方式
# 推荐使用loc和iloc来获取的方式
data.loc[data.index[0:4], ['open', 'close', 'high', 'low']]
data.iloc[0:4, data.columns.get_indexer(['open', 'close', 'high', 'low'])]
open | close | high | low | |
---|---|---|---|---|
2018-02-27 | 23.53 | 24.16 | 25.88 | 23.53 |
2018-02-26 | 22.80 | 23.53 | 23.78 | 22.80 |
2018-02-23 | 22.88 | 22.82 | 23.37 | 22.71 |
2018-02-22 | 22.25 | 22.28 | 22.76 | 22.02 |
2、赋值操作
对DataFrame当中的close列进行重新赋值为1
# 直接修改原来的值
data['close'] = 1
# 或者
data.close = 1
3 、排序
排序有两种形式,一种对于索引进行排序,一种对于内容进行排序
DataFrame排序
- 使用df.sort_values(by=, ascending=)
- 单个键或者多个键进行排序,
- 参数:
- by:指定排序参考的键
- ascending:默认升序
- ascending=False:降序
- ascending=True:升序
# 按照开盘价大小进行排序 , 使用ascending指定按照大小排序
data.sort_values(by="open", ascending=True).head()
open | high | close | low | volume | price_change | p_change | turnover | |
---|---|---|---|---|---|---|---|---|
2015-03-02 | 12.25 | 12.67 | 1 | 12.20 | 96291.73 | 0.32 | 2.62 | 3.30 |
2015-09-02 | 12.30 | 14.11 | 1 | 12.30 | 70201.74 | -1.10 | -8.17 | 2.40 |
2015-03-03 | 12.52 | 13.06 | 1 | 12.52 | 139071.61 | 0.18 | 1.44 | 4.76 |
2015-03-04 | 12.80 | 12.92 | 1 | 12.61 | 67075.44 | 0.20 | 1.57 | 2.30 |
2015-03-05 | 12.88 | 13.45 | 1 | 12.87 | 93180.39 | 0.26 | 2.02 | 3.19 |
# 按照多个键进行排序
data.sort_values(by=['open', 'high'])
open | high | close | low | volume | price_change | p_change | turnover | |
---|---|---|---|---|---|---|---|---|
2015-03-02 | 12.25 | 12.67 | 1 | 12.20 | 96291.73 | 0.32 | 2.62 | 3.30 |
2015-09-02 | 12.30 | 14.11 | 1 | 12.30 | 70201.74 | -1.10 | -8.17 | 2.40 |
2015-03-03 | 12.52 | 13.06 | 1 | 12.52 | 139071.61 | 0.18 | 1.44 | 4.76 |
2015-03-04 | 12.80 | 12.92 | 1 | 12.61 | 67075.44 | 0.20 | 1.57 | 2.30 |
2015-03-05 | 12.88 | 13.45 | 1 | 12.87 | 93180.39 | 0.26 | 2.02 | 3.19 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
2015-06-11 | 33.17 | 34.98 | 1 | 32.51 | 173075.73 | 0.54 | 1.59 | 5.92 |
2017-11-01 | 33.85 | 34.34 | 1 | 33.10 | 232325.30 | -0.61 | -1.77 | 5.81 |
2015-06-10 | 34.10 | 36.35 | 1 | 32.23 | 269033.12 | 0.51 | 1.53 | 9.21 |
2015-06-12 | 34.69 | 35.98 | 1 | 34.01 | 159825.88 | 0.82 | 2.38 | 5.47 |
2015-06-15 | 34.99 | 34.99 | 1 | 31.69 | 199369.53 | -3.52 | -10.00 | 6.82 |
643 rows × 8 columns
使用df.sort_index给索引进行排序
这个股票的日期索引原来是从大到小,现在重新排序,从小到大
# 对索引进行排序
data.sort_index()
open | high | close | low | volume | price_change | p_change | turnover | |
---|---|---|---|---|---|---|---|---|
2015-03-02 | 12.25 | 12.67 | 1 | 12.20 | 96291.73 | 0.32 | 2.62 | 3.30 |
2015-03-03 | 12.52 | 13.06 | 1 | 12.52 | 139071.61 | 0.18 | 1.44 | 4.76 |
2015-03-04 | 12.80 | 12.92 | 1 | 12.61 | 67075.44 | 0.20 | 1.57 | 2.30 |
2015-03-05 | 12.88 | 13.45 | 1 | 12.87 | 93180.39 | 0.26 | 2.02 | 3.19 |
2015-03-06 | 13.17 | 14.48 | 1 | 13.13 | 179831.72 | 1.12 | 8.51 | 6.16 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
2018-02-14 | 21.49 | 21.99 | 1 | 21.48 | 23331.04 | 0.44 | 2.05 | 0.58 |
2018-02-22 | 22.25 | 22.76 | 1 | 22.02 | 36105.01 | 0.36 | 1.64 | 0.90 |
2018-02-23 | 22.88 | 23.37 | 1 | 22.71 | 52914.01 | 0.54 | 2.42 | 1.32 |
2018-02-26 | 22.80 | 23.78 | 1 | 22.80 | 60985.11 | 0.69 | 3.02 | 1.53 |
2018-02-27 | 23.53 | 25.88 | 1 | 23.53 | 95578.03 | 0.63 | 2.68 | 2.39 |
643 rows × 8 columns
data['p_change'].sort_values(ascending=True).head()
'''
2015-09-01 -10.03
2015-09-14 -10.02
2016-01-11 -10.02
2015-07-15 -10.02
2015-08-26 -10.01
Name: p_change, dtype: float64'''
使用series.sort_index()进行排序
与df一致
# 对索引进行排序
data['p_change'].sort_index().head()
'''
2015-03-02 2.62
2015-03-03 1.44
2015-03-04 1.57
2015-03-05 2.02
2015-03-06 8.51
Name: p_change, dtype: float64
'''
总结
- 1.索引
- 直接索引 -- 先列后行,是需要通过索引的字符串进行获取
- loc -- 先行后列,是需要通过索引的字符串进行获取
- iloc -- 先行后列,是通过下标进行索引
- ix -- 先行后列, 可以用上面两种方法混合进行索引
- 2.赋值
- data[""] = **
- data. =
- 3.排序
- dataframe
- 对象.sort_values()
- 对象.sort_index()
- series
- 对象.sort_values()
- 对象.sort_index()
- dataframe
Pandas的基本数据操作相关推荐
- 机器学习之Pandas:Pandas介绍、基本数据操作、DataFrame运算、Pandas画图、文件读取与处、缺失值处理、数据离散化、合并、交叉表和透视表、分组与聚合、案例(超长篇,建议收藏慢慢看)
文章目录 Pandas 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 案例: 问题:如何让数据更有意义的显示?处理刚才的股票数据 给股票涨跌幅数据增加行 ...
- pandas基本数据操作
pandas基本数据操作 为了更好的理解这些基本操作,我们将读取一个真实的股票数据.关于文件操作,后面在介绍,这里只先用一下API # 读取文件 data = pd.read_csv("./ ...
- python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并
目录 1 pandas介绍 1.1 Pandas介绍 1.2 为什么使用Pandas 1.3 案例:在numpy当中创建的股票涨跌幅数据形式 1.4 DataFrame 1.4.1 DataFrame ...
- 机器学习1:——Pandas——1:基本数据操作
一.基本数据操作 学习目标 目标 记忆DataFrame的形状.行列索引名称获取等基本属性 应用Series和DataFrame的索引进行切片获取 应用sort_index和sort_values实现 ...
- 数据分析工具Pandas(2):Pandas的索引操作
数据分析工具Pandas(1):Pandas的数据结构 数据分析工具Pandas(2):Pandas的索引操作 Pandas的索引操作 索引对象Index 1. Series和DataFrame中的索 ...
- Pandas简明教程:五、Pandas简单统计操作及通用方式
文章目录 1.DataFrame的方法使用举例 2.DataFrame的方法调用通用方式 3.DataFrame直接调用其它方法 本系列教程教程完整目录: 前面已经提到,Pandas的DataFram ...
- 【Python基础】Pandas向量化字符串操作
一.向量化操作概述 Python内置一系列强大的字符串处理方法,但这些方法只能处理单个字符串,处理一个序列的字符串时,需要用到循环. 那么,有没有办法,不用循环就能同时处理多个字符串呢,pandas的 ...
- 玩转 Pandas 的 Groupby 操作
作者:Lemon 来源:Python数据之道 玩转 Pandas 的 Groupby 操作 大家好,我是 Lemon,今天来跟大家分享下 pandas 中 groupby 的用法. Pandas 的 ...
- Pandas数据类型及操作
Pandas数据类型及操作,pandas 提供了一组标准的时间序列处理工具和数据算法 数据类型及操作 Python 标准库的 datetime datetime 模块中的 datetime. time ...
最新文章
- Flutter从0基础到App上线
- R语言笔记3:提取R对象的子集
- Objective-C中的@property使用[五]
- error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug...
- 使用response的outputstream
- 源码安装NASM,无root权限
- day21 pickle json shelve configpaser 模块
- Kaggle新赛:木薯叶疾病分类
- IOS-简单WebView的使用
- 阿里巴巴YunOS加入物联网标准组织ZigBee联盟
- 【模拟】蓝桥20:蛇形填数
- C# 调用控制台应用程序及传参
- 君正T31硬件设计手册
- 深度学习:摩尔纹识别(翻拍检测)
- 计算机键盘复制键是哪个,键盘按什么键复制粘贴_键盘上复制粘贴快捷键是哪个键-win7之家...
- 对多媒体框架的几点看法
- 计算机网络英语形容词,英语常用形容词有哪些
- 去除ueditor自动默认添加p标签
- 分布表示(distributional representation)与分布式表示(distributed representation)
- thinkpad T450 重新安装系统 win 10
热门文章
- Vue父组件传给子组件数据,子组件得不到数据解决方法
- 汇编语言--SS 和 SP
- 油烟净化器和抽油烟机的区别在哪里?开餐馆应该安装哪个
- cocos2d-x 游戏 之 Tiled Map Editor(地图编辑)
- const指针 与指向const的指针的区别
- 为什么荒野行动pc版获取服务器信息,荒野行动获取服务器信息一直不动 服务器信息0解决方法...
- Win 11解除文件被安全扫描的问题
- 【STM32】XPT2046四导线触摸屏控制器 SPI驱动
- XPT2046 5寸HDMI显示屏触摸参数 (通过旋转屏幕达到仿制waveshare屏幕完美使用)
- 关于期初采购业务(仓库已经入库,未开采购发票的情况)