Python数据分析II

目录

1.HS-排序返回前n行

2.HS-相关性

3.缺失值处理

4.时间

5.时间索引

6.分组聚合

7.离散分箱

8.Concat关联(索引关联)

9.Merge关联(字段关联)

10.join合并(左字段,右索引)

11.行列转置及透视表

12.数据可视化-面向过程

13.数据可视化-面向对象

14.快速生成柱状图

15.快速生成散点图

16.中文显示

17.众图表归类

箱线图数值展示如下: 

数据较大,生成超级饼图如下: 


        一图胜千言,人是一个视觉敏感的动物,大多数人对数字无法在较短的时间内找到规律和业务意义,可视化就势在必行。视觉化效应 (Visual effects) 是指人类认知过程中,只要将非视觉性信息转化成视觉信息,可以大大增强海马体的记忆与前额叶皮质的思维反应速度。

        Pandas的数据可视化依赖于matplotlib模块的pyplot类,在安装Pandas时会自动安装Matplotlib,Matplotlib是一个专门的绘图可视化包,可以对图形做细节控制,绘制出出版质量级别的图形,通过Matplotlib,可以简单地绘制出常用的统计图形。

        除了Matplotlib以外还有很多用于可视化的包,比如Seaborn等。

=========================================================================

1.HS-排序返回前n行
# 按指定列降序排序并输出前n行
表名.nlargest(n,'指定列')
# 按指定列升序排序并输出前n行
表名.nsmallest(n,'指定列')
# 一二级排序(False降序/True升序)
表名.sort_values(by=['一级排序列','二级排序列'],ascending=[False,True])
2.HS-相关性
# 计算数值列之间的相关性
表名.corr()
# 正数是正相关,负数是负相关
# 0-0.3是弱相关,0.3-0.7稳定,0.7-1是强相关
# 面积和价格呈现正相关, 面积越大, 价格越贵
3.缺失值处理
# NAN 即缺失值 特殊浮点数 啥也不是 也都不想等
# 改成False后缺失值则不显示
pd.read csv('c:../city_day.csv',keep default_na=False)
# 为空则True/False
表名.isnull()/notnull()
# 将缺失值用指定数据填充
表名.fillna(数据)
# 将平均值填充缺失值并替换旧列并select*
名称 = 表名['列名'].mean()
表名['列名']=表名['列名'].fillna(名称)
# 删除缺失值
表名.dropna().shape
# 一整行全空的情况下才会删掉该行
表名.dropna(how='all').shape
# 指定某两列为空的话删除该行
表名.dropna(subdet=['列1','列2'],how='all').shape
4.时间
from datetime import datetime
# 显示当前时间
datetime.now()
​
# 将其他格式的时间列转化为时间格式的时间列
表名['Date']= pd.to_datetime(表名['Date'])
表名.info()
​
# 子格式(年月日季度)
print(表名['Date'].dt.year)
print(表名['Date'].dt.month)
print(表名['Date'].dt.day)
表名['Date'].dt.quarter
​
# 返回星期几,从日开始计数,0对应星期一
表名['Date'].dt.dayofweek
​
# Timestamp 时间戳
名字 = pd.to_datetime('2024-06-06 14:48:50')
名字.year
​
# 每个时间和最小时间的时间差
表名['Date']-表名['Date'].min()
s_.dt.days # int型无单位
5.时间索引
# 将时间列干成索引
表名.set_index('列名',inplace=True)
# 将索引再干回去
表名.reset_index(inplace=True)
# 筛选为某时间的数据
表名.loc['2018-01-01']
# 筛选时间FW指定
表名.loc['2018-02-01 00:00:00':'2018-02-02 23:59:59']
6.分组聚合
# 按某列分组后求平均值
表名.groupby(by=['分组列名']).mean()
# 按某列分组后对指定列求平均值
print(表名.groupby(by=['分组列名'])['操作列'].mean())
# 按某列分组后对指定列求平均值,并显示字段名
print(表名.groupby(by=['分组列名'])[['操作列']].mean())
# 按某列分组后对指定两列求平均值
print(表名.groupby(by=['分组列名'])[['操作列1','操作列2']].mean())
# 按某列分组后对指定两列求平均值和最大值
print(表名.groupby(by=['分组列名'])[['操作列1','操作列2']].agg(['mean','max']))
# 按某列分组后对列1求平均值和对列2求最大值
print(表名.groupby(by=['分组列名']).agg({'操作列1':'mean','操作列2':'max'}))
# 按某两列二级分组后对列1求平均值和对列2求最大值
print(表名.groupby(by=['分组列1','分组列2']).agg({'操作列1':'mean','操作列2':'max'}))
7.离散分箱
# 对某列均分成n个FW
pd.cut(表名['列名'],bins = n)
# 显示每一组数据的个数
pd.cut(表名['列名'],bins = n).value_counts()
# 自定义FW,FW左开右闭
pd.cut(表名['列名'],bins = [0,10,20,30]).value_counts()
# 按照某列进行分箱归类作新列(暂不计数)
表名['新列名'] = pd.cut(表名['列名'],bins = [0,10,20,30],labels=['名称1','名称2','名称3'])
# 对每个FW命名
pd.cut(表名['列名'],bins = [0,10,20,30],labels=['名称1','名称2','名称3']).value_counts()
8.Concat关联(索引关联)
# 竖着关联(值不够,NaN来凑)
pd.concat([表1,表2],axis=0)
# 横着关联(值不够,NaN来凑)
pd.concat([表1,表2],axis=1)
# join指定关联方式
pd.concat([表1,表2],axis=0,join='inner')
9.Merge关联(字段关联)
# 按照指定字段内连接(左右相同才算)
左表.merge(右表,on='关联字段',how='inner')
# 按照指定字段左外连接(保留左表,值不够,NaN来凑)
左表.merge(右表,on='关联字段',how='left')
# 按照指定字段右外连接(保留右表,值不够,NaN来凑)
左表.merge(右表,on='关联字段',how='right')
# 按照指定字段左右连接(保留左右表,值不够,NaN来凑)
左表.merge(右表,on='关联字段',how='outer')
# 两关联字段不同名,按照指定字段内连接(值不够,NaN来凑)
左表.merge(右表,left_on='关联字段1',right_on='关联字段2',how='inner')
# 指定sufhixes后缀,当关联结果中,出现了同名的字段,用于区分哪个字段来自于哪一张表,默认是('_x,_y')
左表.merge(右表,left_on='关联字段1',right_on='关联字段2',how='inner',suffixes=('_left','_right'))
10.join合并(左字段,右索引)
# 指定后缀
左表.join(右表,lsuffix='_left',rsuffix='_right')
# 左表的某列和右表的index做join,左表的一列数据和右表的行索引进行合并
左表.join(右表,on='某列',lsuffix='left',rsuffix='right')
11.行列转置及透视表

index 分组字段之一,在结果中作为行索引

columns 分组字段之一,在透视表结果中作为列名

values 聚合字段,在透视表的结果中展示在值的位置上

aggfunc 聚合函数,对聚合字段使用的统计函数名字

需要注意的是,index、columns、values都可以传列表,aggfunc可以针对不同的value选择不同的聚合方式,此时需要传入字典,但是不推荐把表做的过于复杂。

# 转置
print(表名.T)
# 计算的结果可以通过分组聚合来实现,只不过是展示的方式跟分组聚合有差异
表名.pivot_table(index='作行索引的列名',columns='作行索引字段名的列名',values='作数据的列名',aggfunc='作数据的列的操作方式')
# 例子
uniqlo_df.pivot_table(index='城市',columns=['产品名称'],values='销售金额',aggfunc='sum')
# 也可以对多个字段进行展示
uniqlo_df.pivot_table(index='城市',columns=['产品名称','销售渠道'],values='销售金额',aggfunc='sum')
12.数据可视化-面向过程
# 导包
import pandas as pd
import matplotlib.pyplot as plt
# 准备数据的x轴坐标
x = [-3, 5, 7] 
# 准备数据的y轴坐标
y = [10, 2, 5] 
# figure 创建画布,figsize指定画布大小
plt.figure(figsize=(15,3))  
# plot 绘图
plt.plot(x, y) 
# xlim 设置x轴坐标的显示范围
plt.xlim(-5, 10) 
# ylim 设置y轴坐标的显示范围
plt.ylim(-3, 15) 
# 设置x轴标签 size字体,大小
plt.xlabel('X Axis',size=20) 
# 设置y轴标签
plt.ylabel('Y axis') 
# 设置标题内容, size字体大小
plt.title('o',size=30) 
# 设置网格线
plt.grid(True)
# 显示图片
plt.show() 
13.数据可视化-面向对象
# 创建坐标轴对象
fig, ax = plt.subplots(figsize=(15,3))
# 调用坐标轴的绘图方法
ax.plot(x, y) 
# 调用坐标轴的设置x轴上下限的方法
ax.set_xlim(0, 10) 
ax.set_ylim(-3, 8) 
# 调用坐标轴的设置x轴标签的方法
ax.set_xlabel('X axis') 
# 调用坐标轴的设置y轴标签的方法
ax.set_ylabel('Y axis',size = 20) 
# 调用坐标轴的设置标题的方法
ax.set_title('Line Plot',size = 30) 
plt.show()
14.快速生成柱状图
import pandas as pd
import matplotlib.pyplot as plt
名称 = pd.read_csv('D:/Yuanman/day01/02_代码/data/seaborn-data/tips.csv')
# 创建画布
plt.figure(figsize=(16,8))
# 显示列
plt.hist(名称['列名'],bins=10)
# 显示网格线
plt.grid(True)
plt.show()
15.快速生成散点图
# 查看两列数据是否有关系
import pandas as pd
import matplotlib.pyplot as plt
名称 = pd.read_csv('D:/Yuanman/day01/02_代码/data/seaborn-data/tips.csv')
# 创建画布
plt.figure(figsize=(16,8))
# 显示列(两个变量之间是否有关联)
plt.scatter(名称['列1'],名称['列2'])
# 显示网格线
plt.grid(True)
plt.show()
16.中文显示
# 用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus']=False
# 快速画折线图,定义网格线、画布、标题并中文显示
表名.plot(grid=True,figsize=(10,6),title='狗')
plt.show()
17.众图表归类
# 折线图的全写方式,也可以自定义指定xy轴对应的列
表名.plot.line(x='列名', y='列名')
# 柱状图,加stacked=True多列合一
表名.plot.bar(stacked=True) 
# 横向柱状图(条形图),加stacked=True多列合一
表名.plot.barh(stacked=True) 
# 直方图
表名.plot.hist() 
# 箱形图
表名.plot.box() 
# 核密度估计图
表名.plot.kde() 
# 面积图
表名.plot.area() 
# 饼图,y='列名',显示百分比,图大小,画布大小
表名.plot.pie(y='列名',autopct='%.2f%%',radius=0.9,figsize=(16,8)) 
# 散点图
表名.plot.scatter() 
# 气泡图(更高维度的散点图),参数s控制点的大小,实现三维数据展示
表名.plot.scatter(x='第1维度列',y='第2维度列',grid=True,s=表名['第3维度列']*10,figsize=(16,8))
# 箱线图(图形注释见下图所示)
表名.boxplot()
# 六边形箱体图,或简称六边形图,颜色深浅表示该值出现的频率
# gridsize设定蜂箱格子的大小,数字越小格子越大
表名.plot.hexbin(x='横坐标列', y='纵坐标列', gridsize=12)
plt.show()
箱线图数值展示如下: 

数据较大,生成超级饼图如下: 

Python绘图展示介绍到这里,希望对读者有所帮助,感谢大家的支持😍!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式 —— 观察者模式

设计模式 —— 观察者模式 什么是观察者模式观察者模式定义观察者模式的角色观察者模式的使用场景观察者模式的实现 被观察者(Subject)观察者(Observer)通知(notify)更新显示(update&#xff09…

Apache Pulsar 从入门到精通

一、快速入门 Pulsar 是一个分布式发布-订阅消息平台,具有非常灵活的消息模型和直观的客户端 API。 最初由 Yahoo 开发,在 2016 年开源,并于2018年9月毕业成为 Apache 基金会的顶级项目。Pulsar 已经在 Yahoo 的生产环境使用了三年多&#…

26-LINUX--I/O复用-select

一.I/O复用概述 /O复用使得多个程序能够同时监听多个文件描述符,对提高程序的性能有很大帮助。以下情况适用于I/O复用技术: ◼ TCP 服务器同时要处理监听套接字和连接套接字。 ◼ 服务器要同时处理 TCP 请求和 UDP 请求。 ◼ 程序要同时处理多个套接…

Python 连接 MySQL 及 SQL增删改查(主要使用sqlalchemy)

目录 一、环境 二、MySQL的连接和使用 2.1方式一:sql为主 2.1.1创建连接 2.1.2 表结构 2.1.3 新增数据 ​编辑 2.1.4 查看数据 ​编辑 2.1.5 修改数据 2.1.6 删除数据 2.2方式二:orm对象关系映射 2.2.1 mysql连接 2.2.2 创建表 2.2.3 新增…

关于 Redis 中集群

哨兵机制中总结到,它并不能解决存储容量不够的问题,但是集群能。 广义的集群:只要有多个机器,构成了分布式系统,都可以称之为一个“集群”,例如主从结构中的哨兵模式。 狭义的集群:redis 提供的…

Java里面的10个Lambda表达式必须掌握,提高生产力

目录 Java里面的10个Lambda表达式必须掌握,提高生产力 前言 1. 使用Lambda表达式进行集合遍历 2. 使用Lambda表达式进行集合过滤 3. 使用Lambda表达式进行集合映射 4. 使用Lambda表达式进行集合排序 5. 使用Lambda表达式进行集合归约 6. 使用Lambda表达式进…

使用docker-compose搭建达梦数据库主备集群

目录 1. Docker集群的搭建 2. 检查主备数据库 3. 主备集群的JDBC连接设置 1. Docker集群的搭建 达梦的镜像文件都是tar文件,通过docker load命令导入: docker load -i dm8_20240422_x86_rh6_64_rq_ent_8.1.3.140.tar 成功导入后,可看到…

刚刚❗️德勤2025校招暑期实习测评笔试SHL测评题库已发(答案)

📣德勤 2024暑期实习测评已发,正在申请的小伙伴看过来哦👀 ㊙️本次暑期实习优先考虑2025年本科及以上学历的毕业生,此次只有“审计及鉴定”“税务与商务咨询”两个部门开放了岗位~ ⚠️测评注意事项: &#x1f44…

【JAVASE】java语法(成员变量与局部变量的区别、赋值运算符中的易错点)

一:成员变量与局部变量的区别 区别 成员变量 局部变量 类中位置不同 …

Java:110-SpringMVC的底层原理(上篇)

SpringMVC的底层原理 在前面我们学习了SpringMVC的使用(67章博客开始),现在开始说明他的原理(实际上更多的细节只存在67章博客中,这篇博客只是讲一点深度,重复的东西尽量少说明点) MVC 体系结…

2024 AEE | 风丘科技将亮相日本爱知国际会展中心——共同创造!

2024年名古屋汽车工程博览会(Automotive Engineering Exposition 2024 NAGOYA)将于7月17-19日在日本爱知县国际展示场(Aichi Sky Expo)开展。本展会是专门为活跃在汽车行业的工程师和研究人员举办的汽车技术展览,汇聚了…

Web自动化测试-掌握selenium工具用法,使用WebDriver测试Chrome/FireFox网页(Java

目录 一、在Eclipse中构建Maven项目 1.全局配置Maven 2.配置JDK路径 3.创建Maven项目 4.引入selenium-java依赖 二、Chrome自动化脚本编写 1.创建一个ChromeTest类 2.测试ChromeDriver 3.下载chromedriver驱动 4.在脚本中通过System.setProperty方法指定chromedriver的…

操作系统期末复习整理知识点

操作系统的概念:①控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;②提供给用户和其他软件方便的接口和环境;③是计算机中最基本的系统软件 功能和目标: ①操作系统作为系统资源…

搭贝请假审批应用

在现代企业管理中,高效的请假审批系统至关重要。搭贝的请假审批应用通过简化员工的请假流程、提升管理层的工作效率,确保企业运作的连贯性和透明度。本文将介绍搭贝请假审批应用的主要功能模块:请假分析看板、请假申请审批流、请假类型维护和…

RocketMq源码解析六:消息存储

一、消息存储核心类 rocketmq消息存储的功能主要在store这个模块下。 核心类就是DefaultMessageStore。我们看下其属性 // 配置文件 private final MessageStoreConfig messageStoreConfig; // CommitLog 文件存储实现类 private final CommitLog commitLog; …

Mybatis05-一对多和多对一处理

多对一和一对多 多对一 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 结果映射(resultMap): association 一个复杂类型的关联&…

PHP实现抖音小程序用户登录获取openid

目录 第一步、抖音小程序前端使用tt.login获取code 第二步、前端拿到code传给后端 第三步、方法1 后端获取用户信息 第四步、方法2 抖音小程序拿到用户信息把用户信息传给后端 code2Session抖音小程序用户登录后端文档 第一步、抖音小程序前端使用tt.login获取code 前端 …

leetcode 所有可能的路径(图的遍历:深度优先和广度优先)

leetcode 链接: 所有可能的路径 1 图的基本概念 1.1 有向图和无向图 左边是有向图,右边是无向图。对于无向图来说,图中的边没有方向,两个节点之间只可能存在一条边,比如 0 和 1 之间的边,因为是无向图&am…

线性代数|机器学习-P12Ax=b条件下x最小值问题

文章目录 1. Axb下的最值问题-图形转换2. Gram-Schmidt 标准形3. 迭代法-Krylov子空间法 1. Axb下的最值问题-图形转换 假设我们有一个直线方程如下: 3 x 1 4 x 2 1 \begin{equation} 3x_14x_21 \end{equation} 3x1​4x2​1​​ 在二维平面上,各个范…

DDMA信号处理以及数据处理的流程---原始数据生成

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar…