gpt4 book ai didi

python - Pandas for 循环

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:09 25 4
gpt4 key购买 nike

我有一个数据集,它有一个类别字段“城市”和 2 个指标,年龄和体重。我想使用循环为每个城市绘制散点图。但是,我正在努力将我需要的 group by 和循环组合在一个语句中。如果我只使用 for 循环,我最终会得到每条记录的图表,如果我按分组进行分组,我会得到正确数量的图表,但没有值。

这是我的代码,仅使用 for 循环和我的组,注释掉了:

import pandas as pd
import numpy as np
import matplotlib.pylab as plt


d = { 'City': pd.Series(['London','New York', 'New York', 'London', 'Paris',
'Paris','New York', 'New York', 'London','Paris']),
'Age' : pd.Series([36., 42., 6., 66., 38.,18.,22.,43.,34.,54]),
'Weight': pd.Series([225,454,345,355,234,198,400, 256,323,310])
}

df = pd.DataFrame(d)

#for C in df.groupby('City'):
for C in df.City:
fig = plt.figure(figsize=(5, 4))
# Create an Axes object.
ax = fig.add_subplot(1,1,1) # one row, one column, first plot
# Plot the data.
ax.scatter(df.Age,df.Weight, df.City == C, color="red", marker="^")

最佳答案

不要多次调用 plt.figure,因为每次调用都会创建一个新图形(粗略地说,窗口)。

import pandas as pd
import numpy as np
import matplotlib.pylab as plt

d = {'City': ['London', 'New York', 'New York', 'London', 'Paris',
'Paris', 'New York', 'New York', 'London', 'Paris'],
'Age': [36., 42., 6., 66., 38., 18., 22., 43., 34., 54],
'Weight': [225, 454, 345, 355, 234, 198, 400, 256, 323, 310]}

df = pd.DataFrame(d)
fig, ax = plt.subplots(figsize=(5, 4)) # 1
df.groupby(['City']).plot(kind='scatter', x='Age', y='Weight',
ax=ax, # 2
color=['red', 'blue', 'green'])

plt.show()

enter image description here

  1. plt.subplots 返回图形 fig 和轴 ax
  2. 如果将 ax=ax 传递给 Panda 的 plot 方法,那么所有的绘图都会出现在同一个轴上。

为每个城市做一个单独的图:

import pandas as pd
import numpy as np
import matplotlib.pylab as plt

d = {'City': ['London', 'New York', 'New York', 'London', 'Paris',
'Paris', 'New York', 'New York', 'London', 'Paris'],
'Age': [36., 42., 6., 66., 38., 18., 22., 43., 34., 54],
'Weight': [225, 454, 345, 355, 234, 198, 400, 256, 323, 310]}

df = pd.DataFrame(d)
groups = df.groupby(['City'])
for city, grp in groups: # 1
fig, ax = plt.subplots(figsize=(5, 4))
grp.plot(kind='scatter', x='Age', y='Weight', # 2
ax=ax)

plt.show()
  1. 这也许就是您所缺少的。当你遍历一个GroupBy 对象,它返回一个二元组:groupby 键和子数据框。
  2. 在 for 循环中使用 grp,即子数据帧而不是 df

关于python - Pandas for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com