Titanic--细节记录二

目录

merge、join以及concat的方法的不同以及相同

 merge

join 

concat

 stack函数

agg函数

countplot--计算条形统计图

 FacetGrid

kdeplot--核密度估计图

facet.set

 facet.add_legend()

折线图表示年龄分布情况

为什么所有的曲线都被添加到同一个图上:

填充问题


merge、join以及concat的方法的不同以及相同

相同之处:都用于合并数据。 不同之处:

  • merge主要是基于列的合并。
  • join主要是基于索引(行标签)的合并。
  • concat可以沿任意轴合并,更灵活。
import pandas as pddf1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})
df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})

                                            

 merge

result = pd.merge(df1, df2, on='A', how='outer')

join 

df1 = df1.set_index('A')
df2 = df2.set_index('A')
result = df1.join(df2, lsuffix='_df1', rsuffix='_df2')

  1. df1 = df1.set_index('A'):将df1的索引设置为"A"列,意味着后续的连接操作将基于这个列的值。
  2. df2 = df2.set_index('A'):同样地,将df2的索引设置为"A"列。
  3. result = df1.join(df2, lsuffix='_df1', rsuffix='_df2'):使用join方法将df1df2连接在一起。参数lsuffixrsuffix是必要的,因为两个DataFrame在设置索引后将具有相同的列名,这些后缀将添加到重叠列名中,以便区分来自哪个DataFrame。
  4. 如果df2中A列中的值有与df1中A的值相同的则会连接在一起,否则将会补成nan

concat

result = pd.concat([df1, df2])

 stack函数

stack的作用是重新塑造DataFrame,它将数据的列“堆叠”成行,生成一个MultiIndex Series,其中新的索引级别包括原始DataFrame的列名。这有助于将宽格式的数据转换为长格式,并常用于准备数据进行分析或可视化。

例如,如果原始DataFrame是:

   A  B
0  1  2
1  3  4

那么stack()的结果将是:

0  A    1B    2
1  A    3B    4
dtype: int64

agg函数

agg函数是Pandas库中的一个强大工具,用于聚合操作。它允许你同时对一个或多个列执行多种聚合操作。

使用agg函数,你可以一次执行例如求和、平均值、最小值和最大值等多种操作,并将结果组合成一个DataFrame。

以下是一个示例,说明如何使用agg函数:

import pandas as pd# 创建一个示例DataFrame
df = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
})# 对'A'列求和,对'B'列求最大值和最小值
result = df.agg({'A': 'sum','B': ['max', 'min']
})

结果是:

      A    B
max NaN  6.0
min NaN  4.0
sum 6.0  NaN

也可以对整个DataFrame调用agg并应用相同的聚合函数到每一列:

result = df.agg(['sum', 'mean'])
      A    B
sum   6   15
mean  2.0  5.0

countplot--计算条形统计图

sns.countplot(x="Pclass", hue="Survived", data=text)
  • x="Pclass":设置x轴上的变量为"Pclass"列。这意味着图形将显示该列中不同类别的计数。

  • hue="Survived":使用"Survived"列为图形着色,这样你就可以看到每个"Pclass"类别中"Survived"的不同值的计数。这可以帮助你理解"Pclass"和"Survived"之间的关系。

  • data=text:设置数据源为text DataFrame。这是你之前从CSV文件读取的数据。

 FacetGrid

facet = sns.FacetGrid(text, hue="Survived",aspect=3)

FacetGrid是一个用于创建一组图形的对象,这些图形可以根据一个或多个分类变量的不同级别展示数据。

  • facet = sns.FacetGrid():创建一个FacetGrid对象并将其赋值给变量facet

  • text:第一个参数,指定要使用的DataFrame,这里是text

  • hue="Survived":设置着色变量为"Survived"列。这意味着在网格内的每个小图中,不同的"Survived"值将使用不同的颜色表示。

  • aspect=3:设置每个小图的宽高比为3。这控制了每个小图的形状。

kdeplot--核密度估计图

facet.map(sns.kdeplot,'Age',shade= True)
  • facet: 这是一个已经创建的FacetGrid对象,通常基于某个分类变量对数据进行分组。

  • .map(): 这是FacetGrid对象的方法,用于在网格的每个子集上绘制特定类型的图。

  • sns.kdeplot: 这是传递给map方法的绘图函数,用于在每个facet上绘制核密度估计图。

  • 'Age': 这是传递给kdeplot的变量名,表示要绘制KDE图的DataFrame中的列名。

  • shade=True: 这是传递给kdeplot的一个参数,表示KDE图下方的区域将被填充或"阴影",使图形更容易阅读和解释。

facet.set

facet.set(xlim=(0, text['Age'].max()))

这行代码设置了FacetGrid对象中每个子图的x轴范围。

  • facet: 这是一个已经创建的FacetGrid对象。

  • .set(): 这是FacetGrid对象的一个方法,用于设置网格属性。

  • xlim=(0, text['Age'].max()): 这是传递给set方法的一个参数,用于设置x轴的限制。

    • 0: x轴的起始值设置为0。
    • text['Age'].max(): x轴的结束值设置为text DataFrame中'Age'列的最大值。

 facet.add_legend()

facet.add_legend()

facet.add_legend()是Seaborn库中FacetGrid对象的一个方法,用于在图的一个角落添加图例。

图例是一个包含一个或多个条目的区域,每个条目由一个标记(例如颜色块或线条)和一个标签组成。图例用于解释图中的符号和颜色代表的含义。

如果之前创建的FacetGrid对象facet基于某个分类变量进行着色(例如通过hue参数指定),那么调用facet.add_legend()将添加一个图例来解释这些颜色。

图例通常自动基于hue参数所代表的数据列的名称和唯一值生成。

折线图表示年龄分布情况

text.Age[text.Pclass == 1].plot(kind='kde')
text.Age[text.Pclass == 2].plot(kind='kde')
text.Age[text.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")

为什么所有的曲线都被添加到同一个图上:

  1. 没有新的图形或轴创建:如果你想在不同的图或轴上绘制,你通常会使用像plt.figure()plt.subplot()这样的函数来创建新的图或轴。在你的代码中,没有使用这些函数,所以所有的绘图都被添加到当前的图和轴上。

  2. 连续的绘图调用:当你连续调用plot函数,matplotlib会在当前活动的轴上绘制。如果没有创建新的轴或图,那么连续的绘图调用将在同一个轴上绘制。

  3. 全局状态:matplotlib有一个全局状态机制,它跟踪当前的图、轴等。当你调用像plt.plot()这样的函数时,它操作当前活动的图和轴。如果你不显式地改变活动的图或轴,连续的调用将在同一位置操作。

填充问题

具体地说,plot方法的kind='kde'选项并不直接接受shade参数。如果你想要控制阴影或填充KDE图下方的区域,你可以直接使用Seaborn的kdeplot函数,或者使用matplotlib的命令来手动填充。

import seaborn as sns
sns.kdeplot(text.Age[text.Pclass == 1], shade=True)
sns.kdeplot(text.Age[text.Pclass == 2], shade=True)
sns.kdeplot(text.Age[text.Pclass == 3], shade=True)
plt.xlabel("age")
plt.legend((1,2,3),loc="best")

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

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

相关文章

标记垃圾,有三种色彩:四千长文带你深入了解三色标记算法

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

MFC计算分贝

分贝的一种定义是,表示功率量之比的一种单位,等于功率强度之比的常用对数的10倍; 主要用于度量声音强度,常用dB表示; 其计算,摘录网上一段资料; 声音的分贝值可以通过以下公式计算&#xff1…

【数据结构】‘双向链表’冲冲冲

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Mybatis-Plus

1. Mybatis-Plus概念 1.1 Mybatis-Plus介绍 官⽹: https://mybatis.plus/ 或 https://mp.baomidou.com/ Mybatis-Plus 介绍 MyBatis-Plus (简称 MP )是⼀个 MyBatis 的增强⼯具,在 MyBatis 的基础上只做增强不做改变,…

“可一学院”区块链学习平台正式启动,助力BSV技术普及与传播

2023年8月8日,上海可一澈科技有限公司(以下简称“可一科技”) 正式发布区块链学习平台“可一学院”。“可一学院” 立足于BSV区块链技术本源,汇集了多层次的专业课程和学习资源,致力于打造一个适合各类人群使用的一站式…

SpringMVC关于SSM的整合配置步骤

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 SSM整合 一、创建工程1.1创建Maven工程1.2工程命名1.3检查…

Spring Boot 项目实现 Spring AOP

【注】实现在SpringBoot项目中,同时给两个类的方法添加AOP前置通知 1、创建一个SpringBoot项目 2、创建两个目标类和方法 package com.tqazy.learn_spring_project.spring_aop;import org.springframework.stereotype.Service;/*** ClassName SpringAopUserServi…

JZ40最小的K个数

题目地址:最小的K个数_牛客题霸_牛客网 题目回顾: 解题思路: 注意本题不需要去重。 最简单的方法:排序后数组顺序是由小到大的,也就是说此时数组前k个数就是我们要求的结果。 整体代码: public ArrayLi…

【Linux从入门到精通】文件I/O操作(C语言vs系统调用)

文章目录 一、C语言的文件IO相关函数操作 1、1 fopen与fclose 1、2 fwrite 1、3 fprintf与fscanf 1、4 fgets与fputs 二、系统调用相关接口 2、1 open与close 2、2 write和read 三、简易模拟实现cat指令 四、总结 🙋‍♂️ 作者:Ggggggtm 🙋‍…

MySQL多表查询

1.创建student和score表 创建score表 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: 向score表插入记录的INSERT语句如下: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#…

图·c++

数据结构: 邻接矩阵,邻接表 1.图的存储方式:邻接矩阵,邻接表 1.稀疏图和稠密图 2.无向图: n n n 个点,最多 n ( n − 1 ) / 2 n(n-1)/2 n(n−1)/2 条边, 当 m m m 接近 n ( n − 1 ) / 2 …

【JVM】CPU飙高排查方案与思路

文章目录 CPU飙高排查方案与思路 CPU飙高排查方案与思路 1.使用top命令查看占用cpu的情况 2.通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:40940 3.查看进程中的线程信息 4.可以根据进程 id 找到有问题的线程&a…

积木报表集成前端加载js文件404

项目场景: 在集成积木报表和shiro时候: 集成积木报表,shrio,shrio是定义在另一个模块下的,供另一个启动类使用,积木报表集成shrio的时候,需要依赖存放shrio的核心包,该核心包除了存…

React构建的JS优化思路

背景 之前个人博客搭建时,发现页面加载要5s才能完成并显示 问题 React生成的JS有1.4M,对于个人博客服务器的带宽来说,压力较大,因此耗费了5S的时间 优化思路 解决React生成的JS大小,因为我用的是react-router-dom…

到 2030 年API 攻击预计将激增近 1000%

导读云原生应用程序编程接口管理公司 Kong 联合外部经济学家的最新研究预计,截至 2030 年 API 攻击将激增 996%,意味着与 API 相关的网络威胁的频率和强度都显着升级。 这项研究由 Kong 分析师和布朗大学副教授 Christopher Whaley 博士合作进行&#x…

webpack 热更新的实现原理

webpack 的热更新⼜称热替换(Hot Module Replacement),缩写为HMR。这个机制可以做到不⽤刷新浏览器⽽将新变更的模块替换掉旧的模块。 原理: ⾸先要知道 server 端和 client 端都做了处理⼯作: 在 webpack 的 watch…

docker案例复现

$uri导致的CRLF注入漏洞 前期准备dockerdocker compose 漏洞配置 前期准备 docker 要完成这样的测试,需要我们有一定的环境,也就是需要大家去安装docker 更新系统软件包: sudo yum update 安装 Docker 的依赖软件包: sudo yum …

Ubuntu 20.04(服务器版)安装 Anaconda

0、Anaconda介绍 Anaconda是一个开源的Python发行版本,包含了包括Python、Conda、科学计算库等180多个科学包及其依赖项。因此,安装了Anaconda就不用再单独安装CUDA、Python等。 CUDA,在进行深度学习的时候,需要用到GPU&#xf…

百度云盘发展历程与影响

摘要: 百度云盘作为中国领先的云存储与共享服务提供商,自其创立至今经历了多个阶段的发展与变革。本论文通过对百度云盘的历史回顾与分析,探讨了其在技术、商业模式、用户体验以及对社会的影响等方面的演变。同时,还分析了在竞争激…

Easy Rules规则引擎(1-基础篇)

目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、…