Попытка вырезать строки из DataFrame, не работает через определенные столбцы - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь вырезать некоторые строки моего набора данных, если значения Area или Population слишком велики, чтобы я мог создать график рассеяния на основе данных.Когда я режу через Population, он работает нормально, но не с Area.

flagsCut = flags.loc[flags['Area'] < 6000]
flagsCut = flags.loc[flags['Population'] < 250]
print(flagsCut.shape)
plt.scatter(flagsCut['Area'].tolist(), flagsCut['Population'].tolist(), c='blue', alpha=0.5)
plt.xlabel('Area')
plt.ylabel('Population')
plt.show()

приводит к разбросу (не может вставлять извините)

Как вы можете видеть, на оси x по-прежнему есть 4 точки данных за 6000, а на оси y нет 250.

Есть идеи о том, почему это происходит и как это исправить?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Следующее должно фильтровать как по площади, так и по населению за один шаг.

flagsCut = flags.loc[(flags['Area'] < 6000) | (flags['Population'] < 250)]
0 голосов
/ 18 октября 2018

Вы применяете свое первое ограничение на Area к flags кадру данных, но затем вы снова применяете второе ограничение на Population к flags, а не к уже ограниченному flagsCut кадру данных.

Необходимо применить второе ограничение к уже ограниченному фрейму данных, например так:

flagsCut = flags[flags['Area'] < 6000]
flagsCut = flagsCut[flagsCut['Population'] < 250]

Или, более кратко:

flagsCut = flags[(flags['Area'] < 6000) | (flags['Population'] < 250)]
plt.scatter(flagsCut['Area'], flagsCut['Population'], 'b', alpha=0.5)
plt.xlabel('Area')
plt.ylabel('Population')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...