# 一文掌握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量化进阶的更多相关文章

  1. 【PY从0到1】 一文掌握Pandas量化基础

    # 2[PY从0到1] 一文掌握Pandas量化基础 # Numpy和pandas是什么关系呢? # 在我看来,np偏向于数据细节处理,pd更偏向于表格整体的处理. # 要记住的pd内部的数据结构采用 ...

  2. IIS6(Win2003) 使用.net 4.0 后,默认文档失效解决方案。

    IIS6(Win2003) 使用.net framework 4.0 后,默认文档失效解决方案. 用.net framework 4.0 开发的WEB项目,但放到iis6 中无法使用默认文档,状况如下 ...

  3. 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单

    为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本  功能清单文档下载地址: 功 ...

  4. python manage.py runserver 0.0.0.0:8000

    python manage.py runserver 这种命令行,可以在服务器端输入IP:8000直接访问 在 python manage.py runserver 127.0.01:8000 在服务 ...

  5. 前置机器学习(四):一文掌握Pandas用法

    Pandas提供快速,灵活和富于表现力的数据结构,是强大的数据分析Python库. 本文收录于机器学习前置教程系列. 一.Series和DataFrame Pandas建立在NumPy之上,更多Num ...

  6. MDN 文档高级操作进阶教程

    MDN 文档高级操作进阶教程 MDN 文档, 如何优雅的使用 MDN 文档上的富文本编辑器 pre & 语法高亮器 code & note box source code 上传附件 i ...

  7. Django 2.0.1 官方文档翻译: 文档目录 (Page 1)

    Django documentation contents 翻译完成后会做标记. 文档按照官方提供的内容一页一页的进行翻译,有些内容涉及到其他节的内容,会慢慢补上.所有的翻译内容按自己的理解来写,尽量 ...

  8. airflow2.0.2分布式安装文档

    需要安装的组件 组件 功能 Airflow Webserver 查询元数据以监控和执行DAGs的web界面. Airflow Scheduler 它检查元数据数据库中的DAG和任务的状态,在必要时创建 ...

  9. _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0

    笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

随机推荐

  1. 使用 Shiro,从架构谈起,到框架集成!

    使用 Shiro,从架构谈起,到框架集成! 一.架构 1.使用用户的登录信息创建令牌 2.执行登陆动作 3.判断用户 4.两条重要的英文 二.实现Realm 1.缓存机制 2.散列算法与加密算法 3. ...

  2. spark SQL (五)数据源 Data Source----json hive jdbc等数据的的读取与加载

    1,JSON数据集 Spark SQL可以自动推断JSON数据集的模式,并将其作为一个Dataset[Row].这个转换可以SparkSession.read.json()在一个Dataset[Str ...

  3. Java中的transient关键字,使用小结

    transient关键字的介绍: 一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了S ...

  4. Spring boot获取getBean

    package com.job.center.quartz.common; import org.springframework.beans.BeansException; import org.sp ...

  5. .Net Core 3.1浏览器后端服务(一) Web API项目搭建

    一.前言 基于CefSharp开发的浏览器项目已有一段时间,考虑到后期数据维护需要Server端来管理,故开启新篇章搭建浏览器后端服务.该项目前期以梳理服务端知识为主,后期将配合CefSharp浏览器 ...

  6. 织梦dedecms首页、列表页、文章页文章点击浏览次数实时调用方法

    首先呢,先在根目录 /plus 目录下找到count.php  复制一份然后命名为viewclick.php(你也可以命名为你容易理解的名字)用编辑器将viewclick.php打开然后删除以下几行代 ...

  7. Flink-v1.12官方网站翻译-P014-Flink Architecture

    Flink架构 Flink是一个分布式系统,为了执行流式应用,需要对计算资源进行有效的分配和管理.它集成了所有常见的集群资源管理器,如Hadoop YARN.Apache Mesos和Kubernet ...

  8. JDK中jps、jinfo、jstat、jstack、jmap、jconsole等命令简介

    JDK提供了几个很实用的工具,如下: jinfo:观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数,java class path等信息.命令格式:jinf ...

  9. 【noi 2.6_2421】Exchange Rates(DP)

    题意:起始有1000元美元,给出N天美元与加拿大元的汇率.问N天内可以不停的兑换,每次兑换需要收取3%的手续费,问可以得到的最大的美元数. 解法:直接用2个变量存第 i 天时手中是美元和加拿大元的最大 ...

  10. 【应急响应】Windows应急响应入门手册

    0x01 应急响应概述   首先我们来了解一下两个概念:应急响应和安全建设,这两者的区别就是应急响应是被动响应.安全建设是主动防御.  所谓有因才有果,既然是被动的,那么我们在应急响应的时候就得先了解 ...