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绘图展示介绍到这里,希望对读者有所帮助,感谢大家的支持😍!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10秒钟docker 安装Acunetix

1、拉取镜像: 2、查看镜像: [rootdns-server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/hiepnv/acunetix latest f8415551b8f4 2 months ago 1.98GB 3、运行镜像: …

msfconsole利用Windows server2008cve-2019-0708漏洞入侵

一、环境搭建 Windows系列cve-2019-0708漏洞存在于Windows系统的Remote Desktop Services(远程桌面服务)(端口3389)中,未经身份验证的攻击者可以通过发送特殊构造的数据包触发漏洞,可能导致远程无需用户验…

已解决Error || IndexError: index 3 is out of bounds for axis 0 with size 3

已解决Error || IndexError: index 3 is out of bounds for axis 0 with size 3 原创作者: 猫头虎 作者微信号: Libin9iOak 作者公众号: 猫头虎技术团队 更新日期: 2024年6月6日 博主猫头虎的技术世界 🌟 欢迎来…

Android安全开发之 Provider 组件安全

Android系统中的Content Provider组件是一种用于在不同应用之间共享数据的机制。它提供了一种安全、可控的方式,允许应用访问其他应用的数据。然而,如果Provider组件的安全措施没有得到妥善实现,则可能会导致严重的安全漏洞,例如数…

电阻常见失效模式

电阻常见失效模式: 电阻器由于结构较为简单,工艺成熟,通常失效率相对较低。器失效主要表现为以下几种: 阻值漂移:老化后通常发生;(通过老化试验进行筛选,规避该问题) …

万能表单与AI的完美融合,打造个性化AI小程序

在人工智能技术日益成熟的今天,如何将AI智能与用户界面无缝结合,已成为软件开发领域的新挑战。MyCms 以其创新的“万能表单结合AI”功能,为开发者提供了一个全新的解决方案,让个性化AI小程序的开发变得前所未有的简单和高效。 一、…

OBS 录屏软件:录制圆形头像画中画,设置卡通人像(保姆级教程,有步骤图,建议收藏)

Mac分享吧 文章目录 一、OBS录屏软件 圆形头像画中画效果注意:圆形画中画仅需要在软件中设置一次,每次录制,使用带有圆形头像画中画的场景 录制视频即可。该场景不可删除!!!若删除,则需要重新设…

奇安信停服,国内还有什么可用的高防么?

这里写自定义目录标题 背景DDOS怎么办?方案推荐总结 背景 继前段时间百度云加速通知免费服务,6月底奇安信也将停止服务,到时候国内将几乎不存在免费好用的高防CDN了;类似的事情还有阿里云和腾讯云的一年期免费SSl证书也都停止供应…

day31贪心算法part01| 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

**455.分发饼干 ** 视频讲解 | 力扣链接刚开始想到的&#xff0c;但是这样太暴力了&#xff0c;太笨了 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 胃口g 饼干尺寸sint result 0;sort(s.begin(), s.end());…

苍穹外卖笔记-08-套餐管理-增加,删除,修改,查询和起售停售套餐

套餐管理 1 任务2 新增套餐2.1 需求分析和设计接口设计setmeal和setmeal_dish表设计 2.2 代码开发2.2.1 根据分类id查询菜品DishControllerDishServiceDishServiceImplDishMapperDishMapper.xml 2.2.2 新增套餐接口SetmealControllerSetmealServiceSetmealServiceImplSetmealMa…

通过 Webhook 将消息推送至钉钉、飞书、企业微信

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 当我们在 VPS 与 NAS 上部署了大量的应用&#xff0c;如何优雅的接收推送消息就成了一个大问题&#xff0c;在“上古时代”最常用的莫过于 SMTP 直接发送邮件进行通知&#xff0c;但当推送的消息过多且频繁…

《编程小白变大神:DjangoBlog带你飞越代码海洋》

还在为你的博客加载速度慢而烦恼&#xff1f;DjangoBlog性能优化大揭秘&#xff0c;让你的网站速度飞跃提升&#xff01;本文将带你深入了解缓存策略、数据库优化、静态文件处理等关键技术&#xff0c;更有Gunicorn和Nginx的黄金搭档&#xff0c;让你的博客部署如虎添翼。无论你…

认识Spring中的BeanFactoryPostProcessor

先看下AI的介绍 在Spring 5.3.x中&#xff0c;BeanFactoryPostProcessor是一个重要的接口&#xff0c;用于在Spring IoC容器实例化任何bean之前&#xff0c;读取bean的定义&#xff08;配置元数据&#xff09;&#xff0c;并可能对其进行修改。以下是关于BeanFactoryPostProce…

Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息

0 前言 在开展系统安全检查的过程中&#xff0c;除了收集cpu信息&#xff0c;我们还需要收集内存信息。在Linux中&#xff0c;获取内存信息的命令很多&#xff0c;这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令 /proc/meminfo 文件提供了有关系统内存的使用情况…

每日复盘-20240607

今日关注&#xff1a; 这几天市场环境不好&#xff0c;一直空仓。 六日涨幅最大: ------1--------605258--------- 协和电子 五日涨幅最大: ------1--------605258--------- 协和电子 四日涨幅最大: ------1--------605258--------- 协和电子 三日涨幅最大: ------1--------0…

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题 2024/6/5 13:53 rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh --help rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh lun…

24.6.9( 概率dp)

星期一&#xff1a; abc356 D atc传送门 思路&#xff1a;按位与操作&#xff0c;M的非零位对答案一定没有贡献&#xff0c;对M为1的位&#xff0c;考虑有多少k此位也为1 按位枚举&#xff0c;m此位为0跳…

require.context()函数介绍

业务需求&#xff1a; 前端Vue项目怎样读取src/assets目录下所有jpg文件 require.context()方法来读取src/assets目录下的所有.jpg文件 <template><div><img v-for"image in images" :src"image" :key"image" /></div> …

一篇文章搞定Java数组初始化,从此告别迷惑

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…