У меня есть набор данных, который имеет поле категории, «Город» и 2 метрики, возраст и вес. Я хочу построить график рассеяния для каждого города, используя цикл. Однако я изо всех сил пытаюсь объединить группу и цикл, которые мне нужны, в одном заявлении. Если я просто использую цикл for, я получаю диаграмму для каждой записи, и если я делаю группу, я получаю нужное количество диаграмм, но без значений.Pandas for loop on group by
Вот мой код, используя только для цикла с моей группой по закомментирована:
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="^")
Таким образом, в некоторых случаях это было бы отличным решением, но в моем случай, когда я говорю, что мне нужен график рассеяния для каждого города, я действительно имею в виду отдельную диаграмму/цифру для каждого Города. Причина в том, что полный набор данных намного больше, поэтому мне нужно увидеть разные точки на разных графиках. – user3302483
Не знаете, почему, но вышеприведенные 2 примера выкидывают ошибку: ValueError: недопустимый тип диаграммы, заданный разбросом, когда я запускаю их. Я взял группу, которую вы предложили, и вставил в мой код, чтобы я мог теперь перейти к выводу, который я искал. Было бы интересно, почему я вижу неверную ошибку типа диаграммы, хотя и с вашей структурой. Не удалось выяснить это сам. – user3302483
'kind = 'scatter'' был [добавлен в Pandas v.0.13.0] (http://pandas.pydata.org/pandas-docs/version/0.13.0/whatsnew.html). – unutbu