python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)

news2024/11/17 7:49:13

系列文章目录

  1. python开发低代码数据可视化大屏:pandas.read_excel读取表格
  2. python实现直接读取excle数据实现的百度地图标注
  3. python数据可视化开发(1):Matplotlib库基础知识

文章目录

  • 系列文章目录
  • 前言
  • 实践目标
  • 一、读取Excel数据
    • read_excel参数说明
    • 读取全部数据
    • 读取指定列数据
  • 二、DataFrame转化为json
    • DataFrame.to_json参数说明
      • split参数json输出
      • columns参数json输出
      • index参数json输出
      • values参数json输出***
      • records参数json输出***
  • 三、数学运算
  • 四、透视表运算输出
    • pivot_table透视表
    • 输出JSON


在这里插入图片描述

前言

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。在python数据可视化的开发过程中,pandas读取Excel表格数据,然后通过matplotlib、echarts等图表工具进行展示,是最为常见的数据操作。如下:表格为不同月份钢材的价格、销量和库存的演示数据,就实际工作中遇见的问题作为实践学习的目标。
在这里插入图片描述

实践目标

  • 通过pandas读取excel的参数
  • 将读取后的数据转化为flask数据可视化API对接的json格式
  • 将读取后的数据结果导出对应的Excel表格
  • 将读取后的数据结果进行透视运算

一、读取Excel数据

read_excel参数说明

def read_excel(io,sheet_name=0,header=0,names=None,index_col=None,parse_cols=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None, true_values=None, false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skip_footer=0,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)

  • io,为文件类对象,一般作为读取文件的路径;
  • sheet_name,该参数为指定读取excel的表格名;
  • usecols,该参数为返回指定的列,usecols=[A,C]表示只选取A列和C列。usecols=[A,C:E]表示选择A列,C列、D列和E列

读取全部数据

代码如下:

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)

在这里插入图片描述

读取指定列数据

代码如下:

import pandas as pd

df = pd.read_excel(r'temp.xlsx', sheet_name=0, usecols=[0, 2])
print(df)

在这里插入图片描述

二、DataFrame转化为json

DataFrame.to_json参数说明

DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit=‘ms’, default_handler=None, lines=False, compression=‘infer’, index=True, indent=None)

  • path_or_buf :str 或 file handle, 默认为 None,文件路径或对象。如果未指定,则结果以字符串形式返回;
  • force_ascii :bool, 默认为True,强制将字符串编码为ASCII。
  • date_format :{None, ‘epoch’, ‘iso’},日期转换的类型,默认为date_format=‘epoch’,意为将日期转为毫秒形式,输出内容为1564531200000;date_format=‘iso’,输出内容为:“2018-09-17T00:00:00Z”。实际开发中,建议使用epoch,在数据可视化展示页面进行时间戳的转化即可。
  • JSON字符串格式:
参数说明
‘split’类似{‘index’-> [index],
‘columns’[columns],‘data’-> [values]}的字典
‘records’类似于[{column-> value},…,{column-> value}]的列表
‘index’类似{index->​​ {column-> value}}的字典
‘columns’类似{column-> {index->​​ value}}的字典
'values’只是值数组
‘table’类似{‘schema’:{schema},‘data’:{data}}的字典

不同参数的调用,JSON内容输出逻辑如下:

split参数json输出

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)
# print(df)
# 01.输出为json
res = df.to_json(orient='split', force_ascii=False)
print(res)

数据格式:

{"columns":["Product","Month","Price","Sales","Stocks"],"index":[0,1,2,3,4,5,6,7,8,9],"data":[["H型梁",1564531200000,3927.08,10741.41,10359],["小齿轮钢",1564531200000,4126.1,2009.27,3734],["钢板桩",1564531200000,4044.46,3672.76,1563],["中厚板",1564531200000,3903.6,12607.91,4465],["线材",1564531200000,4178.89,3254.39,1183],["H型梁",1567209600000,3886.02,9608.95,10618],["小齿轮钢",1567209600000,4004.98,2959.1,2688],["钢板桩",1567209600000,4028.46,3554.25,2508],["中厚板",1567209600000,3846.76,12154.09,6622],["线材",1567209600000,4100.0,2137.83,1763]]}

columns参数json输出

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)
# print(df)
# 01.输出为json
res = df.to_json(orient='columns', force_ascii=False)
print(res)

数据格式:

{"Product":{"0":"H型梁","1":"小齿轮钢","2":"钢板桩","3":"中厚板","4":"线材","5":"H型梁","6":"小齿轮钢","7":"钢板桩","8":"中厚板","9":"线材"},"Month":{"0":1564531200000,"1":1564531200000,"2":1564531200000,"3":1564531200000,"4":1564531200000,"5":1567209600000,"6":1567209600000,"7":1567209600000,"8":1567209600000,"9":1567209600000},"Price":{"0":3927.08,"1":4126.1,"2":4044.46,"3":3903.6,"4":4178.89,"5":3886.02,"6":4004.98,"7":4028.46,"8":3846.76,"9":4100.0},"Sales":{"0":10741.41,"1":2009.27,"2":3672.76,"3":12607.91,"4":3254.39,"5":9608.95,"6":2959.1,"7":3554.25,"8":12154.09,"9":2137.83},"Stocks":{"0":10359,"1":3734,"2":1563,"3":4465,"4":1183,"5":10618,"6":2688,"7":2508,"8":6622,"9":1763}}

index参数json输出

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)
# print(df)
# 01.输出为json
res = df.to_json(orient='index', force_ascii=False)
print(res)

数据格式:

{"0":{"Product":"H型梁","Month":1564531200000,"Price":3927.08,"Sales":10741.41,"Stocks":10359},"1":{"Product":"小齿轮钢","Month":1564531200000,"Price":4126.1,"Sales":2009.27,"Stocks":3734},"2":{"Product":"钢板桩","Month":1564531200000,"Price":4044.46,"Sales":3672.76,"Stocks":1563},"3":{"Product":"中厚板","Month":1564531200000,"Price":3903.6,"Sales":12607.91,"Stocks":4465},"4":{"Product":"线材","Month":1564531200000,"Price":4178.89,"Sales":3254.39,"Stocks":1183}}

values参数json输出***

适合于地图数据可视化二维数组调用的输出。

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)
# print(df)
# 01.输出为json
res = df.to_json(orient='values', force_ascii=False)
print(res)

数据格式:

[["H型梁",1564531200000,3927.08,10741.41,10359],["小齿轮钢",1564531200000,4126.1,2009.27,3734],["钢板桩",1564531200000,4044.46,3672.76,1563],["中厚板",1564531200000,3903.6,12607.91,4465],["线材",1564531200000,4178.89,3254.39,1183],["H型梁",1567209600000,3886.02,9608.95,10618],["小齿轮钢",1567209600000,4004.98,2959.1,2688],["钢板桩",1567209600000,4028.46,3554.25,2508],["中厚板",1567209600000,3846.76,12154.09,6622],["线材",1567209600000,4100.0,2137.83,1763]]

records参数json输出***

records,是在API对接过程中,最为常用的数据格式,也是DataFrame转json过程中,需要重点使用的。

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)
# print(df)
# 01.输出为json
res = df.to_json(orient='records', force_ascii=False)
print(res)

数据格式:

[{"Product":"H型梁","Month":1564531200000,"Price":3927.08,"Sales":10741.41,"Stocks":10359},{"Product":"小齿轮钢","Month":1564531200000,"Price":4126.1,"Sales":2009.27,"Stocks":3734},{"Product":"钢板桩","Month":1564531200000,"Price":4044.46,"Sales":3672.76,"Stocks":1563},{"Product":"中厚板","Month":1564531200000,"Price":3903.6,"Sales":12607.91,"Stocks":4465},{"Product":"线材","Month":1564531200000,"Price":4178.89,"Sales":3254.39,"Stocks":1183}]

三、数学运算

print(df['Price'].sum())  # 求和
print(df['Price'].max())  # 求最大值
print(df['Price'].mean())  # 求平均数
print(df['Price'].median())  # 求中位数

四、透视表运算输出

pivot_table透视表

import pandas as pd
df = pd.read_excel(r'temp.xlsx', sheet_name=0)  # , usecols=[0, 2]
# 透视功能计算
new_data = pd.pivot_table(df, index=["Product"], aggfunc=sum)
# print(new_data)

输出JSON

使用reset_index(),重新格式化索引号。

# 透视索引号,新增行,
res = new_data.reset_index().to_json(orient='records', force_ascii=False)
print(res)

数据格式:

[{"Product":"H型梁","Price":7813.1,"Sales":20350.36,"Stocks":20977},{"Product":"中厚板","Price":7750.36,"Sales":24762.0,"Stocks":11087},{"Product":"小齿轮钢","Price":8131.08,"Sales":4968.37,"Stocks":6422},{"Product":"线材","Price":8278.89,"Sales":5392.22,"Stocks":2946},{"Product":"钢板桩","Price":8072.92,"Sales":7227.01,"Stocks":4071}]

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Launcher应用列表内搜索框显示异常

问题描述 应用列表界面搜索框显示异常。本地试验后发现以下规律。 1、删除几个底边栏图标 2、旋转屏幕 3、进入应用列表,观察上方搜索框显示 问题分析 此问题是launcher内部界面显示问题,比较初级。找到规律后,发现应用列表内搜索框和底边…

【Hadoop】MapReduce数据倾斜问题解决方案

默认情况下Map任务的数量与InputSplit数量保持一致,Map阶段的执行效率也与InputSplit数量相关,当遇到大量的小文件时我们采用SequenceFile合并成一个大文件,以此来提高运行效率(【Hadoop】MapReduce小文件问题解决方案&#xff08…

OJ万题详解––高考排名(C++详解)

题目 题目描述 高考成绩的排名规则是按总分由高到低排,总分相同的人排名应相同,例如有 5 个同学的考高成绩: 考号姓名成绩001c1567002ygh605003gl690004xtb605005wzs567按照成绩排序后,成绩如下: 排名考号姓名成绩1003…

C/C++ 相关低耦合代码的设计

在我们设计C/C 程序的时候,有时需要两个类或者两个模块相互“认识”,或者两个模块间函数互相调用,假设我们正在开发一个网上商店,代表的网店客户的类必须要知道相关的账户。UML图如下,这被称为环依赖,这两个…

【GIS前沿】什么是新型基础测绘、内容、产品体系、特征?

《测绘法》指出,基础测绘是建立和维护全国统一的测绘基准和测绘系统,进行航天航空影像获取,建立和更新维护基础地理信息数据库,提供测绘地理信息应用服务等。 文章目录一、什么是新型基础测绘?二、新型基础测绘的特征三…

6、场景法

为什么使用场景法 现在的系统基本上都是由事件来触发控制流程的。如:我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,就直接退回。每个事件触…

1.Docker Desktop安装设置

1.下载最新版本Download Docker Desktop | Docker 2.进行安装 2.1进行4.x版本安装 2.2最新版本出现问题 出现 docker desktop stopped 过一会后 quit退出,下载3.x版本 2.3继续安装 Enable Hyper-V windows Features 启动Hyper-V windows 虚拟化功能 百度百科-验证…

【GD32F427开发板试用】一、环境搭建与freertos移植

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:chenjie 【GD32F427开发板试用】一、环境搭建与freertos移植 【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发 【GD32F427开发板…

java集合类(属于工具类)概述

Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构,如栈、队列等。除此之外,Java集合还可用于保存具有映射关系的关联数组。 Java集合大致可分为Set、List、Queue和Map四种体系: 其中Set代表无序、不可重复的集合&…

限制系统性能瓶颈的因素、衡量系统性能的指标

文章目录限制系统性能瓶颈的因素cpu内存磁盘IO网络IO异常数据库锁竞争衡量系统性能的指标响应时间吞吐量计算机资源分配使用率负载承受能力有时候我们的程序性能不高,需要提升性能,这个时候可以从以下几个角度去考虑是什么限制了我们的性能瓶颈.限制系统性能瓶颈的因素 cpu 有…

spring-bean的生命周期-【源码解析】-上

一、spring的bean概念Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。Bean的生命周期就是指…

RocketMq-dashboard:topic 5min trend 原理和源码分析(一)

本文阅读基础:使用或了解过rocketMq;想了解"topic 5min trend"背后的原理;想了解监控模式如何实现。RocketMq的dashboard,有运维页面,驾驶舱,集群页面,主题页面,消费者页面…

[羊城杯 2020]easyre 1题解

一步一个脚印地耐心攀登,就是别去看顶峰,而要专注于在爬的路。 ——黑泽明 目录 1.查壳 2.IDA静态分析main函数 3.研究三重加密 第一重加密 第二重加密 第三重加密 4.解密 1.查壳 64bit exe文件 2.IDA静态分析main函数 拖入IDA,找到…

芯片验证系列——Checker

在产生了有效的激励后,需要判断出不符合功能描述的行为。Checker就是用于查看DUT是否按照功能描述做出期望的行为,识别出所有的设计缺陷。 按照激励的生成方式和检查的功能点分布可以将验证划分为三种方式: 黑盒验证:验证环境不…

【Vue】前端工程化与 webpack

一、前端工程化前端开发1.1 小白眼中的前端开发会写 HTML CSS JavaScript 就会前端开发需要美化页面样式,就拽一个 bootstrap 过来需要操作 DOM 或发起 Ajax 请求,再拽一个 jQuery 过来需要快速实现网页布局效果,就拽一个 Layui 过来1.2 实…

redis事务详解

事务是逻辑上对数据的一组操作,这操作要么一次全部成功或者这操作全部失败,是不可分割的单位 四大特性 原子性,一致性,隔离性,持久性(ACID) redis的事务 redis是弱事务型数据库,并不具备ACID的全部特性 re…

python情感分析:基于jieba的分词及snownlp的情感分析!

情感分析(sentiment analysis)是2018年公布的计算机科学技术名词。 它可以根据文本内容判断出所代表的含义是积极的还是负面的,也可以用来分析文本中的意思是褒义还是贬义。 一般应用场景就是能用来做电商的大量评论数据的分析,…

【Linux】基础IO文件操作

目录 基础IO 重谈文件 重谈C语言的文件操作 系统文件IO 理解文件 文件描述符fd 0 & 1 & 2 文件描述符的分配规则 重定向 使用 dup2 系统调用 在minishell中添加重定向功能 缓冲区 理解缓冲区 再次理解缓冲区 基础IO 重谈文件 1、空文件,也要…

C++STL入门:string的基本使用小笔记

目录 一.string类简介 二.string类的常用成员接口 1.string类对象的构造函数接口 2. string类对象的容量操作接口 std::string::size std::string::length std::string::empty std::string::clear std::string::resize std::string::reserve 3.string类对象的访问及遍历操作…

【精品】k8s的CKA考题17道解析

目标一:记住命令关键单词 第4道题:scale replicas 第5道题:cordon、uncordon、drain 第8道题:target-port 目标二:完成操作要求 NoSchedule 查看工作节点的健康状态 ,确定集群中有多少节点为 Ready 状态,并且去除包含 NoSchedule 污点的节点。之后将数字写到/opt/repl…