如何从 pandas 数据框创建一个 hexbin 图
Posted
技术标签:
【中文标题】如何从 pandas 数据框创建一个 hexbin 图【英文标题】:How to create a hexbin plot from a pandas dataframe 【发布时间】:2021-06-10 01:12:25 【问题描述】:我有这个数据框:
! curl -O https://raw.githubusercontent.com/msu-cmse-courses/cmse202-S21-student/master/data/Dataset.data
import pandas as pd
#I read it in
data = pd.read_csv("Dataset.data", delimiter=' ', header = None)
#Now I want to add column titles to the file so I add them
data.columns = ['sex','length','diameter','height','whole_weight','shucked_weight','viscera_weight','shell_weight','rings']
print(data)
现在我想获取 x 变量列 shell_weight
和 y 变量列 rings
并使用 plt.hexbin
将它们绘制为直方图:
df = pd.DataFrame(data)
plt.hexbin(x='shell_weight', y='rings')
由于某种原因,当我绘制代码时它不起作用:
ValueError: 第一个参数必须是一个序列
谁能帮我画出这两个变量的图表?
【问题讨论】:
【参考方案1】:ValueError: 第一个参数必须是一个序列
plt.hexbin(x='shell_weight', y='rings')
的问题是 matplotlib 不知道 shell_weight
和 rings
应该是什么。它不知道df
,除非你指定它。
既然你已经有一个数据框,用 pandas 绘图是最简单的,但如果你指定源 df
,纯 matplotlib 仍然是可能的:
df.plot.hexbin
(最简单)
在这种情况下,pandas 会自动从 df
推断列,所以我们可以只传递列名:
df.plot.hexbin(x='shell_weight', y='rings') # pandas infers the df source
plt.hexbin
使用纯 matplotlib,要么传递实际的列:
plt.hexbin(x=df.shell_weight, y=df.rings) # actual columns, not column names
# ^^^ ^^^
或者在指定data
源时传递列名:
plt.hexbin(x='shell_weight', y='rings', data=df) # column names with df source
# ^^^^^^^
【讨论】:
以上是关于如何从 pandas 数据框创建一个 hexbin 图的主要内容,如果未能解决你的问题,请参考以下文章
如何从Twitter Search API创建pandas数据框?