pandas(我所用版本0.17)是一个强大数据处理库,在开发金融类系统中我应用到了pandas.Dataframe数据类型,它的数据结构类似一张图表(如下图所示),左边一列为index既行的索引:

             图1

下面主要介绍在开发中使用方法:

1,DataFrame将1分钟K线数据合成5分钟数据

pd_1m = pd.DataFrame() #已有1分钟K线数据
#合成新K线的前提是df的数据的index必须是时间
pd_1m = pd_1m.set_index('kline_time') #将时间戳设置为index
#设置df数据中每列的规则
ohlc_rule = {
'open': 'first',#open列:序列中第一个的值
'high': 'max',#high列:序列中最大的值
'low': 'min',#low列:序列中最小的值
'close': 'last',#close列:序列中最后一个的值
'volume': 'sum',#volume列:将所有序列里的volume值作和
'amount': 'sum'#amount列:将所有序列里的amount值作和
}
#合成5分钟K线并删除为空的行 参数 closed:left类似向上取值既 09:30的k线数据是包含09:30-09:35之间的数据
pd_5m = pd_1m.resample('5min', how=ohlc_rule, closed='left', label='left').dropna(axis=0, how='any')
#dropna(axis=0, how='any') axis参数0:针对行进行操作 1:针对列进行操作 how参数any:只要包含就删除 all:全是为NaN才删除

2,DataFrame的行遍历及过滤

import pandas as pd
import numpy as np dates = pd.date_range('2020-01-01',periods=6)
df = pd.DataFrame(np.random.rand(6,4),index=dates,columns=['a','b','c','d']) # iloc根据行号来取值
print(df.iloc[3]) # 第三行
print(df.iloc[1:4]) # 左闭右开
# loc根据行头来取值 此数据行头是日期
print(df.loc["2020-01"]) # 行头包含2020-01字符串的所有行
print(df.loc["2020-01-02": "2020-01-04",["b","c"]]) # 行头再这个范围内 可指定显示某几列
# 根据列来筛选
print(df["a"]) # 获取单列
print(df[["a","b"]]) # 获取多列
# 以下根据条件筛选也可用于loc函数中
print(df[df['a']>0]) # a列数据大于0的行筛选出来
print(df[~df['a'].isin([2,3,5])]) # ~表示不满足该条件的其他数据 isin表示在某个list中
print(df[(df['a'].isin([2, 3])) & (df['b'] != 0)]) # &与;|表示或 ;运算符:!=不等于 == > < 以此类推等等
# df行遍历
for index,row in enumerate(df.iterrows()):
# row既每行,包含行头及行数据
print(index,row[0],row[1])

3,pandas中转化数据及变更类型

import pandas as pd
import numpy as np # 整理,格式化数据
dates = pd.date_range('2020-01-01',periods=6)
df = pd.DataFrame(np.random.rand(6,4),index=dates,columns=['a','b','c','d'])
df["e"] = pd.Series([1,1,3,4,4,2],index=dates) # apply根据用户执行axis来计算得到新行/列数据 1=列 默认行0
f_col = df.apply(lambda k: k['a']*k['b'] if k['c'] >0.5 else k['a']*k['c'], axis=1) # map是Series的函数通过mapping来生成新的数据行/列 可以使用dict,也可函数
print(df["e"].map({1: 9}))
print(df["e"].map(lambda x: 0 if x > 3 else 1)) # applymap 处理全部的行业数据
def cal_custom(data):
return float("%.2f" % data)
print(df.applymap(cal_custom)) # 在统计分析中会用到变量类型装换 需要转为分类型变量
z = pd.Series([3,4,6,6,4])
z = z.astype("category") # 分类型变量(分类型变量本身可以是数字格式)
# 转换为数字类型
pd.to_numeric(z, errors='coerce') # ignore
# 指定分类型变量为指定顺序的有序分类型变量
print(z.cat.reorder_categories([4,6,3]))
# pandas中pandas.tslib.Timestamp的计算及转换
dtime = pandas.tslib.Timestamp()
dtime = dtime + np.timedelta64(8, 'h')#给时间加上8小时 np为numpy 参数 h 小时 m 分钟
dtime = dtime.strftime('%Y-%m-%d %H:%M:%S')#转换为字符格式

4,其他

print(df.cov()) # 协方差矩阵
print(df.corr()) # 相关系数矩阵
print(df.corrwith(df["a"])) # 某列与其他列的相关系数结果
print(df.groupby(["a","b"]).agg(['mean','std','count','max','sum'])) # std标准差

以上主要为开发问题中遇到的场景,有局限性,希望大家能用上~

使用pandas的部分问题汇总的更多相关文章

  1. pandas知识点脑图汇总

    参考文献: [1]Pandas知识点脑图汇总

  2. pandas(三)汇总和计算描述统计

    pandas对象有一些常用的数学和统计的方法,大部分都属于约简或汇总统计. SUM方法 DataFrame对象的sum方法,返回一个含有列小计的Series >>> df = Dat ...

  3. 用Python的pandas框架操作Excel文件中的数据教程

    用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...

  4. Python_科学计算平台__pypi体系的numpy、scipy、pandas、matplotlib库简介

    1.numpy--基础,以矩阵为基础的数学计算模块,纯数学 存储和处理大型矩阵. 这个是很基础的扩展,其余的扩展都是以此为基础. 快速学习入口 https://docs.scipy.org/doc/n ...

  5. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  6. 【学习】数据处理基础知识(汇总和计算描述统计)【pandas】

    pd对象拥有一组常用的数学和统计方法.大部分都属于约简和汇总统计,用于从Series中单个值,如sum 和 mean 或从DF的行或列中提取一个Series. 1. 描述和汇总统计方法 #汇总和计算描 ...

  7. Pandas基本功能之层次化索引及层次化汇总

    层次化索引 层次化也就是在一个轴上拥有多个索引级别 Series的层次化索引 data=Series(np.random.randn(10),index=[ ['a','a','a','b','b', ...

  8. Pandas汇总和处理缺失数据

    汇总的函数 方法 说明 count 非NA的值数量 describe 针对Series和DataFrame列计算汇总统计 min.max 计算最小值和最大值 argmin.argmax 计算能够获取到 ...

  9. pandas汇总和计算描述统计

    pandas 对象拥有一组常用的数学和统计方法. 他们大部分都属于简约和汇总统计, 用于从Series中提取单个值(如sum或mean) 或从DataFrame的行或列中提取一个Series.跟对应的 ...

随机推荐

  1. day5_非空即真非零即真

    非空即真(字符串.元组.列表.字典.None),非零即真(指的是int类型或数字这种) # d={}# l=[]# t=()# a = ''# b = None以上都代表空 举例1: name = i ...

  2. POSTGRESQL中ERROR: recursive query "t" column 2 has type character varying(150) in non-recursive term but type character varying overall

    最近在做项目的时候有个需求是需要查到当前登录的用户下辖所有区域的数据,并将查询出来的部门信息以如下格式展示 最高人民法院>江苏省高级人民法院>南通市中级人民法院最高人民法院>江苏省高 ...

  3. PyQt5简介及demo

    PyQt5说明 pyqt5是一套Python绑定Digia QT5应用的框架.它可用于Python 2和3.本教程使用Python 3.Qt库是最强大的GUI库之一.pyqt5的官方网站http:// ...

  4. C#基础加强(8)之委托和事件

    委托 简介 委托是一种可以声明出指向方法的变量的数据类型. 声明委托的方式 格式: delegate <返回值类型> 委托类型名(参数) ,例如: delegate void MyDel( ...

  5. python基础(11)-常用模块

    re(正则)模块 常用方法 findall() 以列表返回所有满足条件的结果 import re print(re.findall('\d','a1b2c2abc123'))#['1', '2', ' ...

  6. [vue]mvc模式和mvvm模式及vue学习思路(废弃)

    好久不写东西了,感觉收生疏了, 学习使用以思路为主, 记录笔记为辅作用. v-if: http://www.cnblogs.com/iiiiiher/p/9025532.html v-show tem ...

  7. [py]一致性hash原理

    1,可变,不可变 python中值得是引用地址是否变化. 2.可hash 生命周期里不可变得值都可hash 3.python中内置数据结构特点 有序不可变 有序可变 无序可变 无序不可变 5.一致性h ...

  8. Python subprocess.Popen() error (No such file or directory)

    这个错误很容易引起误解,一般人都会认为是命令执行了,但是命令找不到作为参数对应的文件或者目录.其实还有一层含义,就是这个命令找不到,命令找不到,也会报没有这个文件或者目录的错误. 为什么找不到这个命令 ...

  9. 原生js实现分页效果(带实例)

    小小插件(静态分页) 效果图: 首先实现简单功能: <!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  10. wysiwyg 富文本编辑器(附带图片上传功能)

    Fist: 需要的文件 font 文件夹下面的也是需要的哟 Then: 引入文件 <link href="bootstrap/css/bootstrap.css" rel=& ...