【PY从0到1】 一文掌握Pandas量化进阶
# 一文掌握Pandas量化进阶 # 这节课学习Pandas更深的内容。 # 导入库:
import numpy as np
import pandas as pd # 制作DataFrame
np.random.seed(10)
period = pd.date_range('2017-1-1', periods=10000, freq='D')
df = pd.DataFrame(np.random.randn(10000, 4),
columns=['Data1', 'Data2', 'Data3', 'Data4'],
index = period)
print(df.head())
# Data1 Data2 Data3 Data4
# 2017-01-01 1.331587 0.715279 -1.545400 -0.008384
# 2017-01-02 0.621336 -0.720086 0.265512 0.108549
# 2017-01-03 0.004291 -0.174600 0.433026 1.203037
# 2017-01-04 -0.965066 1.028274 0.228630 0.445138
# 2017-01-05 -1.136602 0.135137 1.484537 -1.079805 # 1> Group操作 # ① 一重分组
df['G1'] = np.random.choice(['A','B','C','D'],10000) # 新加一列用作分组。
grouped = df.groupby('G1')
print(grouped.size()) # 查看分组情况。
# G1
# A 2484
# B 2491
# C 2502
# D 2523
# dtype: int64 grouped.sum() # 分组求和
grouped.max() # 寻找分组最大的
grouped.mean() # 分组求平均
grouped.describe() # 分组统计量
np.transpose(grouped.describe()) # 转置 print(grouped.get_group('A').head()) # 挑出分组为A的DataFrame。 # ②双重分组
# 再建立一个分组
df['G2'] = np.random.choice(['S','Y'],10000)
grouped = df.groupby(['G1','G2']) # 哪个分组在前面就先按哪个分组分类。 # 聚合运算。按G1、G2分组后,分别求Data1和Data2的平均值和最大值。
print(grouped.agg({'Data1':np.mean, 'Data2':np.max})) # 2> 合并操作 # 建立DataFrame
df1 = pd.DataFrame(['1','2','3','4'],
index=['a','b','c','g'],
columns=['A']) df2 = pd.DataFrame(['5','6','7','8'],
index=['a','b','e','f'],
columns=['B']) # ① 用concat合并DataFrame
df = pd.concat((df1,df2),axis=1,ignore_index=False) # 横向合并
print(df)
# A B
# a 1 5
# b 2 6
# c 3 NaN
# g 4 NaN
# e NaN 7
# f NaN 8
# 自动按索引合并,为空不会报错。 # ② DataFrame内置合并方法 df = pd.DataFrame({'A': df1['A'], 'B': df2['B']}) # ③ Join操作(有条件的合并) df1.join(df2,how='left') # 按df1的索引合并,left是默认值,还可以写right,inner,outer。 # ④ Merge操作
df1 = pd.DataFrame(['1','2','3','4'],
index=['a','b','c','d'],
columns=['A',]) df2 = pd.DataFrame(['5','6','7','8'],
index=['a','b','c','d'],
columns=['B',]) c = pd.Series(['10','11','12','13'],
index=['a','b','c','d']) # df1和df2都新增一列。
df1['C'] = c
df2['C'] = c # 合并
print(pd.merge(df1,df2,on='C')) # 该函数默认将一样的列合并。on的默认值在这里就是C.
# A C B
# 0 1 10 5
# 1 2 11 6
# 2 3 12 7
# 3 4 13 8
# 索引会重置。
# 注意,慎用这里的on参数.当C内的数据有重复时,用on参数达不到预想的合并效果。
# 转而用下面的方法合并。(根据索引合并)
print(pd.merge(df1,
df2,
left_index=True,
right_index=True,
suffixes=['_df1','_df2']))
# A C_df1 B C_df2
# a 1 10 5 10
# b 2 11 6 11
# c 3 12 7 12
# d 4 13 8 13
# 其中还有how参数,inner和outer。当df1和df2不同长度时,读者可以自己尝试下效果。 # 3> 层次化索引 np.random.seed(10)
df = pd.Series(np.random.randn(5),
index=[['a', 'a', 'b','b', 'b'],
[1,2,1,2,3]])
print(df)
# a 1 1.331587
# 2 0.715279
# b 1 -1.545400
# 2 -0.008384
# 3 0.621336
# a,b为level 0,123为level 1。
# dtype: float64 # 用unstack()重新排列
df.unstack()
df.unstack().T # 转置
df.unstack().stack() # 逆运算 print(df.sum(level=0)) # 按level0聚合
# a 2.046865
# b -0.932448
# dtype: float64
print(df.sum(level=1)) # 按level1聚合
# 1 -0.213814
# 2 0.706895
# 3 0.621336
# dtype: float64
【PY从0到1】 一文掌握Pandas量化进阶的更多相关文章
- 【PY从0到1】 一文掌握Pandas量化基础
# 2[PY从0到1] 一文掌握Pandas量化基础 # Numpy和pandas是什么关系呢? # 在我看来,np偏向于数据细节处理,pd更偏向于表格整体的处理. # 要记住的pd内部的数据结构采用 ...
- IIS6(Win2003) 使用.net 4.0 后,默认文档失效解决方案。
IIS6(Win2003) 使用.net framework 4.0 后,默认文档失效解决方案. 用.net framework 4.0 开发的WEB项目,但放到iis6 中无法使用默认文档,状况如下 ...
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
- python manage.py runserver 0.0.0.0:8000
python manage.py runserver 这种命令行,可以在服务器端输入IP:8000直接访问 在 python manage.py runserver 127.0.01:8000 在服务 ...
- 前置机器学习(四):一文掌握Pandas用法
Pandas提供快速,灵活和富于表现力的数据结构,是强大的数据分析Python库. 本文收录于机器学习前置教程系列. 一.Series和DataFrame Pandas建立在NumPy之上,更多Num ...
- MDN 文档高级操作进阶教程
MDN 文档高级操作进阶教程 MDN 文档, 如何优雅的使用 MDN 文档上的富文本编辑器 pre & 语法高亮器 code & note box source code 上传附件 i ...
- Django 2.0.1 官方文档翻译: 文档目录 (Page 1)
Django documentation contents 翻译完成后会做标记. 文档按照官方提供的内容一页一页的进行翻译,有些内容涉及到其他节的内容,会慢慢补上.所有的翻译内容按自己的理解来写,尽量 ...
- airflow2.0.2分布式安装文档
需要安装的组件 组件 功能 Airflow Webserver 查询元数据以监控和执行DAGs的web界面. Airflow Scheduler 它检查元数据数据库中的DAG和任务的状态,在必要时创建 ...
- _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0
笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...
随机推荐
- JavaScript 类型、原型与继承学习笔记
目录 一.概览 二.数据类型 1. JavaScript中的数据类型 2. 什么是基本类型(Primitive Data Type) 2.1 概念 2.2 七个基本类型 2.3 基本类型封装对象 3. ...
- 十六:SpringBoot-自定义启动页,项目打包和指定运行环境
SpringBoot-自定义启动页,项目打包和指定运行环境 1.自定义启动页 2.打包配置 2.1 打包pom配置 2.2 多环境配置 3.环境测试接口 4.打包执行 4.1 指定模块打包 4.2 运 ...
- Jenkins (1、自动化发布war包、2、自动化发布nodejs)
1.持续集成javaweb 首先咱们需要安装一个 Jenkins,这个就不必多说了,晚上一搜索一大把,然后安装各种插件,配置各种环境变量, 今天我的实验环境是 使用Jenkins 拉取gitlap上项 ...
- linux(3) 处理目录的常用命令
目录命令总览 ls(英文全拼:list files): 列出目录及文件名 cd(英文全拼:change directory):切换目录 pwd(英文全拼:print work directory):显 ...
- .net core 和 WPF 开发升讯威在线客服与营销系统:实现对 IE8 的完全完美支持 【干货】
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
- for循环语句学习
for循环又称为遍历循环,从名字就可以知道,它用于对象的遍历 语法格式: 会从可迭代对象对象中依次拿出值来赋值给变量,变量的值每次都会被修改 for 变量1[变量2...] in 可迭代对象: 代码块 ...
- Maven三种打包方式jar war pom
1.pom工程 用在父级工程或聚合工程中.用来做jar包的版本控制.必须指明这个聚合工程的打包方式为pom 2.war工程 将会打包成war,发布在服务器上的工程.如网站或服务.在SpringBoot ...
- Windows10与虚拟机中CentOS-7.2进行ftp通信
首先Linux的IP地址可以通过以下命令获取: ifconfig Windows10上面IP地址通过下面命令获取 ipconfig 你首先要保证你的主机和Linux虚拟机是可以ping通的(ping都 ...
- 【uva 1471】Defense Lines(算法效率--使用数据结构+部分枚举+类贪心)
P.S.我完全一个字一个字敲出来的血泪史啊~~所以,没有附代码,也是可以理解的啦.OvO 题意:给一个长度为N(N≤200000)的序列,要删除一个连续子序列,使得剩下的序列中有一个长度最大的连续递增 ...
- P1073 最优贸易(最短路)
题目描述 CC C国有n n n个大城市和m mm 条道路,每条道路连接这 nnn个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 mmm 条道路中有一部分为单向通行的道路,一部分为 ...