4-03-2 Pandas - 散点图、安德鲁斯曲线

相互关系-散点图

散点图是研究两个变量之间关系的经典和基础图,当有多组数据时,也可以用不同的颜色来显示每个组,以下使用美国中西部各州 (midwest.csv) 的人口分布案例来观察,首先先依类别来分群,共 16 的类别 (category),给每个类别不同的颜色,显示 midwild 这个数据集的信息,共有 437 笔数据, 28 个栏位,接着以位于贫穷线以下的比例 (percbelowpoverty, percent below poverty) 与高中毕业生的比例 (perchsd, the percentage of people with a high school diploma) 来画出散点图,很明显的,大多数的点都是往左上角聚集,也就是高中毕业生的比例越高,贫穷的比例越低,说明高中学历与贫穷的相关性。

midwest 数据集说明

栏位说明
county县代号
state州代号
area县面积
poptotal县总人口数
popdensity县总人口数
Population density县人口密度
popwhite县中白人人数
popblack县中黑人人数
popamerindian县中美裔印度人人数
popasian县中亚洲人人数
popother县中其他人种人数
percwhite县中白人比例
percblack县中黑人比例
percamerindan县中美裔印度人比例
percasian县中亚洲人比例
percother县中其他人比例
popadults成人人数
perchsd拥有高中学历比例
percollege拥有大专学历比例
percprof拥有专业能力比例
poppovertyknown已知贫穷人数
percpovertyknown已知贫穷人数比例
percbelowpoverty贫穷线下的比例
percchildbelowpovert小孩贫穷线下的比例
percadultpoverty成人贫穷的比例
percelderlypoverty老人贫穷的比例
inmetro是否在城区
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
  
# 读取数据
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest.csv")
# Prepare Data 
# 每一类 (category) 设定一种颜色
categories = np.unique(midwest['category'])
colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]

print(colors)  
# 显示数据集信息,共有 437 笔数据, 28 个栏位
midwest.info()
  
# 将所有类别的散点图话在同一张表里好做比较,主要是观察受教育程度与贫穷的关系
ax = midwest.loc[midwest.category==categories[0], :].plot.scatter(x='percbelowpoverty', y='perchsd',color=colors[0], label=str(categories[0]))
for i in range(1,len(categories)):
    ax = midwest.loc[midwest.category==categories[i], :].plot.scatter(x='percbelowpoverty', y='perchsd',color=colors[i], label=str(categories[i]),ax=ax)
  
输出结果如下:
  
RangeIndex: 437 entries, 0 to 436
Data columns (total 28 columns):
 #   Column                Non-Null Count  Dtype  
---  ------                --------------  -----  
 0   PID                   437 non-null    int64  
 1   county                437 non-null    object 
 2   state                 437 non-null    object 
 3   area                  437 non-null    float64
 4   poptotal              437 non-null    int64  
 5   popdensity            437 non-null    float64
 6   popwhite              437 non-null    int64  
 7   popblack              437 non-null    int64  
 8   popamerindian         437 non-null    int64  
 9   popasian              437 non-null    int64  
 10  popother              437 non-null    int64  
 11  percwhite             437 non-null    float64
 12  percblack             437 non-null    float64
 13  percamerindan         437 non-null    float64
 14  percasian             437 non-null    float64
 15  percother             437 non-null    float64
 16  popadults             437 non-null    int64  
 17  perchsd               437 non-null    float64
 18  percollege            437 non-null    float64
 19  percprof              437 non-null    float64
 20  poppovertyknown       437 non-null    int64  
 21  percpovertyknown      437 non-null    float64
 22  percbelowpoverty      437 non-null    float64
 23  percchildbelowpovert  437 non-null    float64
 24  percadultpoverty      437 non-null    float64
 25  percelderlypoverty    437 non-null    float64
 26  inmetro               437 non-null    int64  
 27  category              437 non-null    object 
dtypes: float64(15), int64(10), object(3)
memory usage: 95.7+ KB

在这里插入图片描述

图 4-3-6 利用 pandas 画出一个散点图

分群-安德鲁斯曲线
安德鲁斯曲线允许人们用大量的曲线来绘制多元数据 (multivariate data),这些曲线使用样本属性作傅立叶级数的系数来创建,通过为每个群不同的曲线着色,可以可视化数据聚类。属于同一群样本的曲线通常会比较接近,形成较大的结构。以下以 mtcars 为例,以汽缸数为分群依据,可以发现的确有群聚的现象。

import numpy as np
import pandas as pd
from pandas.plotting import andrews_curves
  
# Import
df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mtcars.csv")
# 移除掉字符串的栏位,保留数字栏位便于傅立叶级数计算
df.drop(['cars', 'carname'], axis=1, inplace=True)
  
# Plot
andrews_curves(df, 'cyl', colormap='Set1')

在这里插入图片描述

图 4-3-7 利用 pandas 画出一个安德鲁斯曲线

Python数据处理-文章目录

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Pandas绘制散点图,你可以使用`df.plot.scatter`方法。如果你只有一个维度的数据,可以使用`df.plot.scatter`来绘制单维度的散点图。如果你有多个维度的数据,可以使用`df.plot.scatter`来绘制交叉维度的散点图。 [1] 示例1代码如下: ```python import pandas as pd import matplotlib.pyplot as plt # 准备数据 data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10]} df = pd.DataFrame(data) # 绘制散点图 df.plot.scatter(x='x', y='y') # 显示图形 plt.show() ``` 示例2代码如下: ```python import pandas as pd import matplotlib.pyplot as plt # 准备数据 data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10], 'c': ['red', 'blue', 'green', 'yellow', 'purple']} df = pd.DataFrame(data) # 绘制散点图 df.plot.scatter(x='x', y='y', c='c') # 显示图形 plt.show() ``` 如果你想绘制散点图矩阵,可以使用`pd.plotting.scatter_matrix`方法。示例代码如下: ```python import pandas as pd import matplotlib.pyplot as plt # 准备数据 data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10], 'z': [3, 6, 9, 12, 15]} df = pd.DataFrame(data) # 绘制散点图矩阵 pd.plotting.scatter_matrix(df) # 显示图形 plt.show() ``` 这些示例代码可以帮助你使用Pandas绘制不同类型的散点图。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python Pandas 图形绘制(三):散点图(单维度和交叉维度)](https://blog.csdn.net/qq_42067550/article/details/106414534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python基于pandas绘制散点图矩阵代码实例](https://download.csdn.net/download/weixin_38742571/13713419)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值