Pandas教程20:数据透视表pivot_table重塑股票数据,同列不同行转化成同行不同列

本文主要是介绍Pandas教程20:数据透视表pivot_table重塑股票数据,同列不同行转化成同行不同列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

---------------pandas数据分析集合---------------
Python教程71:学习Pandas中一维数组Series
Python教程74:Pandas中DataFrame数据创建方法及缺失值与重复值处理
Pandas数据化分析,DataFrame行列索引数据的选取,增加,修改和删除操作
Pandas教程05:DataFrame数据常用属性和方法汇总
Pandas教程06:DataFrame.merge数据的合并处理
Pandas教程07:DataFrame数据的算术运算+逻辑运算+describe()方法+统计函数+自定义函数运算
Pandas教程08:教你DataFrame数据的条件筛选——精选篇
Pandas教程09:使用date_range函数,创建时间序列数据
Pandas教程10:DataFrame数据可视化绘制折线图、柱状图、散点图、饼形图
Pandas教程11:关于pd.DataFrame.shift(1)数据下移的示例用法
Tkinter教程22:DataFrame数据加入到treeview树视图(含横纵滚动条+正反向排序)
Pandas教程12:常用的pd.set_option方法,显示所有行和列+不换行显示等等…
Pandas教程13:groupby函数的分组、聚合、转换和过滤操作
Pandas教程14:DataFrame数据合并(concat+merge+_append+join)的4种方法
Pandas教程15:多个DataFrame数据(保存+追加)为Excel表格数据

Pandas教程16:DataFrame列标题批量重命名+空df数据判断+列名顺序重排

Pandas教程17:关于json数据转化成DataFrame数据,消除警告提示的方法。

Pandas教程18:df数据中含有的关键字批量replace替换+删除行或列

Pandas教程19:groupby分组后,对列中指定关键字的组,进行求和运算。

1.pivot_table是一种数据处理技术,用于对数据进行透视操作。它可以根据指定的行和列,对数据进行聚合、汇总和重塑,以便更好地理解和分析数据。
在Excel中,pivot_table是一种常见的功能,用于将原始数据表格转换为更易读和分析的汇总表格。在Python中,pandas库提供了pivot_table函数,用于实现相同的功能。语法如下:

pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True)

参数说明如下:

data:要进行透视操作的数据集。
values:要聚合的数值列。
index:透视表的行索引。
columns:透视表的列索引。
aggfunc:聚合函数,默认为’mean’,表示计算均值。
fill_value:用于填充缺失值的值。
margins:是否显示行和列的汇总,默认为False。
dropna:是否删除包含缺失值的行或列,默认为True

1.假设有这样一个需求,股票中成交类型有bs和中性盘,把类型中"B"和"S"提取出来,分别转化为买入金额和卖出金额,同时确保不存在"B"或"S"时对应的买入或卖出金额显示为0,最后要使买入和卖出金额在同一行显示+并统计所有买单和卖单值。说的有些绕,大家跑一下代码就知道,是什么个效果了。

# @Author : 小红牛
# 微信公众号:WdPython
import pandas as pd# 1.设置kind类中含有bsu的虚拟股票数据
data = {'股代码': ['600519', '600519', '600519', '600519'],'时间': ['20240315', '20240315', '20240315', '20240315'],'金额': [866.26, 500.13,2000.18, 1233.86],'kind': ['B', 'S', 'B', 'U']
}# 创建DataFrame
df = pd.DataFrame(data)
print('1.原始DataFrame数据:'.center(30, '-'))
print(df)# 2.使用pivot_table方法来重塑数据
pivot_df = df.pivot_table(index=['股代码', '时间'], columns='kind', values='金额', aggfunc='sum').fillna(0)
# 3.重置索引,使其变为普通的列
pivot_df.reset_index(inplace=True)
print('2.重塑处理后的数据:'.center(30, '-'))
print(pivot_df)
# 4.使用字典来重命名df列标题,把bsu替换成对应的
column_mapping = {'B': '总买金额', 'S': '总卖金额', 'U': '中性盘'}
df_renamed = pivot_df.rename(columns=column_mapping)
# print(df_renamed)
# 需要的列数据
df_renamed.columns = ['股代码', '时间', '总买金额', '总卖金额', '中性盘']
# 5.显示优化后的DF数据
print('3.新数据:'.center(30, '-'))
print(df_renamed)

输出内容:实际当中会有很多个成交数据的,操作的方式是一样的,这里只用几个数据操作演示。执行代码后把600519贵州茅台所有的b,s,u相加后汇总为一条数据显示。

-------1.原始DataFrame数据:-------股代码        时间       金额 kind
0  600519  20240315   866.26    B
1  600519  20240315   500.13    S
2  600519  20240315  2000.18    B
3  600519  20240315  1233.86    U
---------2.重塑处理后的数据:----------
kind     股代码        时间        B       S        U
0     600519  20240315  2866.44  500.13  1233.86
----------3.新数据:-----------股代码        时间     总买金额    总卖金额      中性盘
0  600519  20240315  2866.44  500.13  1233.86

2.另一种情况,有些股票的大单b,s,u不一定同时都有数据,如果再使用上面的方法,将无法解决问题。处理思路,我们只需要添加一个b,s,u的行数据,默认值为0,就可以万能用法了,0相加的时候是不影响最后的结果的。

import pandas as pd# 1.设置一个只有B的数据,没有s和u
data = {'股代码': ['600519', '600519'],'时间': ['20240315', '20240315'],'金额': [866.26, 2000.18],'kind': ['B', 'B']
}
# 设置列名, 列名与data数据中的列名相同
columns = ['股代码', '时间', '金额', 'kind']
# 创建一个DataFrame
df = pd.DataFrame(data, columns=columns)
# 2.增加bsu空数据,在第几行随便写数字随便,只要不覆盖原数据即可
df.loc[20] = ['600519', '20240315', 0, 'B']
df.loc[30] = ['600519', '20240315', 0, 'S']
df.loc[40] = ['600519', '20240315', 0, 'U']
print('1.原始DataFrame数据:'.center(30, '-'))
print(df)# 3.使用pivot_table方法来重塑数据
pivot_df = df.pivot_table(index=['股代码', '时间'], columns='kind', values='金额', aggfunc='sum').fillna(0)
# print(pivot_df)
# 4.重置索引,使其变为普通的列
pivot_df.reset_index(inplace=True)
print('2.重塑处理后的数据:'.center(30, '-'))
print(pivot_df)
# 5.使用字典来重命名df列标题,把bsu替换成对应的
column_mapping = {'B': '总买金额', 'S': '总卖金额', 'U': '中性盘'}
df_renamed = pivot_df.rename(columns=column_mapping)
# print(df_renamed)
# 需要的列数据
df_renamed.columns = ['股代码', '时间', '总买金额', '总卖金额', '中性盘']
# 6.显示优化后的DF数据
print('3.新数据:'.center(30, '-'))
print(df_renamed)

输出内容:

-------1.原始DataFrame数据:-------股代码        时间       金额 kind
0   600519  20240315   866.26    B
1   600519  20240315  2000.18    B
20  600519  20240315     0.00    B
30  600519  20240315     0.00    S
40  600519  20240315     0.00    U
---------2.重塑处理后的数据:----------
kind     股代码        时间        B    S    U
0     600519  20240315  2866.44  0.0  0.0
---------3.新数据:----------股代码        时间     总买金额  总卖金额  中性盘
0  600519  20240315  2866.44   0.0  0.0

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

这篇关于Pandas教程20:数据透视表pivot_table重塑股票数据,同列不同行转化成同行不同列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822779

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池