Titanic--细节记录二

news/2024/11/8 0:52:04/

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.ppmy.cn/news/1027851.html

相关文章

【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】

文章目录 big.LITTLE 技术背景big.LITTLE 技术详解big.LITTLE 硬件要求 big.LITTLE 软件模型CPU MigrationGlobal Task SchedulingGlobal Task Scheduling比CPU Migration的优势 转自:https://zhuanlan.zhihu.com/p/630981648 如有侵权,请联系删除 big.L…

Expo项目 使用Native base UI库

装包: yarn add native-base expo install react-native-svg12.1.1 Index.js: import React from react import { View, Text } from react-native import useList from ./useList import { NativeBaseProvider, Button, Box } from native-base import styles f…

【好好练习ACM-DAY1】

网站主要参照洛谷 牛客 力扣 cf等 题单列表 - 洛谷 题单链接 今天的刷题内容如上 在进入专题学习之前 先看补充知识 数组能开多大 C/C数组的大小最大能有多大?_c数组大小_JoannaJuanCV的博客-CSDN博客 全局:int 2000*2000 6个0可 局部&#xf…

阿里云服务器安装WordPress网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器安装WordPress博客网站教程,WordPress是使用PHP语言开发的博客平台,在支持PHP和MySQL数据库的服务器上,您可以用WordPress架设自己的网站,也可以用作内容管理系统(CMS)。本教…

Vue.js2+Cesium1.103.0 九、淹没分析效果

Vue.js2Cesium1.103.0 九、淹没分析效果 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><spanid"button"style"position: absolute; right: 50px; top: 50px; z-index: 999; font-size: 24px…

计算机组成原理-笔记-汇总

&#x1f4da; 前言 本人在备考408&#xff0c;王道讲得的确不错&#xff0c;本人之前也看过哈工大【刘宏伟老师】的课&#xff0c;两者对比下来。 王道——更加基础&#xff0c;对小白更加友好哈工大——偏实践偏硬件&#xff08;会将更多的代码硬件设计&#xff09; PS&#…

docker配置文件

/etc/docker/daemon.json 文件作用 /etc/docker/daemon.json 文件是 Docker 配置文件&#xff0c;用于配置 Docker 守护进程的行为和参数。Docker 守护进程是负责管理和运行 Docker 容器的后台进程&#xff0c;通过修改 daemon.json 文件&#xff0c;可以对 Docker 守护进程进…

“深入探索JVM内部机制:解密Java虚拟机原理“

标题&#xff1a;深入探索JVM内部机制&#xff1a;解密Java虚拟机原理 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的内部机制&#xff0c;揭示其工作原理和关键组成部分&#xff0c;包括类加载、内存管理、垃圾回收、即时编译和运行时数据区域等。…