当前位置: 首页 > news >正文

可视化实操记录(自用)

流程

读取数据

original_data = pd.read_csv(“Penguins.csv”)
original_data.head()

评估和清理数据

cleaned_data = original_data.copy() #备份

结构

original_data.sample(5)
数据符合“每个变量为一列,每个观察值为一行,每种类型的观察单位为一个表格”,才不存在结构性问题。

内容

更改数据类型

cleaned_data[“sex”]=cleaned_data[“sex”].astype(“category”)——把分类变量从object变成category

空缺值

cleaned_data.info()——了解大概哪列缺,缺多少
cleaned_data[cleaned_data[“culmen_length_mm”].isnull()]——提取缺失值对应的行

cleaned_data.drop(3, inplace=True)——缺失得太厉害,没有价值的行直接删除。
缺失性别变量的观察值具备其它数据,仍然可以为分析提供价值。由于Pandas以及Matplotlib、Seaborn会自动忽略缺失值,可以保留这些行。

重复值

**根据数据变量的含义以及内容来看,允许变量重复,**我们不需要对此数据检查是否存在重复值。

什么是不能重复的?比如学号。

不一致数据

重点检查分类变量
cleaned_data[“sex”].value_counts()

sex列里存在一个英文句号值,并不代表任何有效性别,我们应当把该值替换为NaN空值。
cleaned_data[‘sex’] = cleaned_data[‘sex’].replace(“.”, np.nan)

脱离实际的数据

cleaned_data.describe()
从以上统计信息来看,cleaned_house_price里不存在脱离现实意义的数值。

数据可视化探索

sns.set_palette(“pastel”) #设置图表色盘为"pastel"

单个分类变量——饼图

species_count = cleaned_data[“species”].value_counts() #统计类别对应的个数
plt.pie(species_count,labels=species_count.index,autopct=“%.1f%%”) #标签就用统计生成的标签索引

可以看出比例分布。

两两分类变量——countplot+hue颜色分类

sns.countplot(data=cleaned_data, x=“island”, hue=“species”)
可以显示不同岛上的企鹅种类数量。

数值变量之间的关系——pairplot

sns.pairplot(cleaned_data)
如果要根据种类进行细分:
sns.pairplot(cleaned_data, hue=‘species’)

补充

.astype()

在这里插入图片描述
astype() 参数:目标数据类型。
返回一个新的 Series(如果是对 DataFrame 的某一列操作)或 DataFrame(如果是对整个 DataFrame 操作),其数据类型已经按照指定的参数进行了转换。原始的 Series 或 DataFrame 并不会被直接修改。

三种赋值方式

cleaned_data = original_data:纯引用赋值
并没有创建一个新的对象,而是让 cleaned_data 和 original_data 指向内存中的同一个对象。也就是说,这两个变量实际上是同一个对象的不同名称。

cleaned_data = original_data.copy():浅拷贝
浅拷贝会创建一个新的对象,但是如果原对象中的元素是可变对象(如列表、字典等),它只会复制引用。也就是说,那么新对象和原对象中的这些可变元素仍然会指向同一个内存地址。
当你修改 cleaned_data 中的子列表时,original_data 中的对应子列表也会被修改。

cleaned_data = original_data.copy(deep=True):深拷贝
深拷贝会递归地复制对象及其所有嵌套的对象,创建一个完全独立的新对象,它们在内存中没有任何共享的部分。
当你修改 cleaned_data 中的子列表时,original_data 不会受到影响。

综上,简单赋值只是创建引用,浅拷贝复制对象结构但共享嵌套的可变对象,而深拷贝则创建一个完全独立的副本。

在原数据中删除行

cleaned_data.drop([3,339], inplace=True)等价于cleaned_data = cleaned_data.drop([3,339])
当使用 inplace=True 时,drop 方法会直接在原 DataFrame 上进行修改,不会返回新的对象。

替换元素

replace 是 pandas 中 Series 和 DataFrame 对象都有的一个方法,其作用是将指定的值替换为其他值。
第一个参数 “.” 表示要被替换的值,
第二个参数 np.nan 是 NumPy 库中的 NaN值。所以cleaned_data[‘sex’] = cleaned_data[‘sex’].replace(“.”, np.nan)的意思是把 cleaned_data[‘sex’] 列中所有值为 “.” 的元素替换为 NaN。

饼图

plt.pie(species_count,labels=species_count.index,autopct=“%.1f%%”)
labels不仅可以传Series,还可以传列表等其它可迭代对象。所以这里直接用species_count

配对图

sns.pairplot(data=cleaned_data,hue=“species”,kind=“reg”, plot_kws={‘scatter_kws’:{‘alpha’:0.3}}) #对种类细分,并增加回归线,修改点的透明度

**kind 参数用于指定非对角线子图(即散点图)的绘制类型。**设置为 “reg” 表示在散点图的基础上添加线性回归拟合线。这样可以帮助我们直观地观察变量之间的线性关系趋势。默认值是kind=“scatter”。

plot_kws={‘scatter_kws’:{‘alpha’:0.3}}
plot_kws 是一个字典类型的参数,用于传递额外的绘图选项,这些选项会被应用到所有的子图上。
其中 ‘scatter_kws’ 是 plot_kws 字典中的一个键,它对应的值也是一个字典,专门用于设置散点图的相关属性。

‘alpha’: 0.3 是 scatter_kws 字典中的一个键值对,alpha 表示透明度,取值范围是 0 到 1,0 表示完全透明,1 表示完全不透明。这里设置为 0.3,意味着散点图中的数据点会有一定的透明度,当数据点比较密集时,使用较低的透明度可以避免数据点相互遮挡,更清晰地展示数据的分布情况。单个散点图直接加上’alpha’: 0.3参数就好。
在这里插入图片描述

相关文章:

  • uniapp + vite + 使用多个 ui 库
  • 2025Java面试题超详细整理《微服务篇》
  • 【音视频】RTSP拉流: RTP负载AAC详解(三)
  • redis cluster测试
  • Linux笔记:Vim编辑器基本操作笔记
  • BDD风格测试
  • Golang协程调度模型MPG
  • 基于Swift实现仿IOS闹钟
  • .Net使用EF Core框架如何连接Oracle
  • Django 创建表 choices的妙用:get_<field_name>_display()
  • 2025年智慧城市解决方案下载:AI-超脑中台,体系架构整体设计
  • CodeGPT + IDEA + DeepSeek,在IDEA中引入DeepSeek实现AI智能开发
  • Office hour 1
  • 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,其各自的优势
  • java八股---java基础03(包、IO流、反射、String、包装类)
  • zola + github page,用 workflows 部署
  • python中的抽象类在项目中的实际应用
  • webassembly009 transformers.js 网页端侧推理 NLLB翻译模型
  • 【Unity】 HTFramework框架(六十)Assistant助手(在Unity中接入DeepSeek等AI语言大模型)
  • 蓝桥杯---N字形变换(leetcode第6题)题解
  • 网信部门曝光网络谣言典型案例,“AI预测彩票号码百分百中奖”等在列
  • 专访|日本驻华大使金杉宪治:对美、对华外交必须在保持平衡的基础上稳步推进
  • “80后”李灿已任重庆市南川区领导,此前获公示拟提名为副区长人选
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 云南一餐馆收购长江野生鱼加工为菜品,被查处罚款
  • 新疆维吾尔自治区乌鲁木齐市米东区政协原副主席朱文智被查