Как удалить определенные значения перед построением данных

Я использую python в первый раз. У меня есть файл csv с несколькими столбцами данных: местоположение, высота, плотность, день и т. д. Я рисую высоту (i_h100) v плотность (i_cd) и мне удалось ограничить высоту значениями ниже 50 с помощью кода ниже . Теперь я хочу, чтобы значения по оси Y находились в пределах определенного «дневного» диапазона, скажем (85-260). Я не могу понять, как это сделать.

import pandas 
import matplotlib.pyplot as plt

data=pandas.read_csv('data.csv')
data.plot(kind='scatter',x='i_h100',y='i_cd')
plt.xlim(right=50)

взгляните на клип.

Quang Hoang 21.06.2019 14:59

Мне нужно удалить данные из столбца дня, чтобы они не были включены в мой график, клип, кажется, переназначает значения

Heather Kay 21.06.2019 15:05

Если вы хотите только построить график зависимости высоты от плотности, возможно, вы захотите сделать data[['height', 'density']].plot(kind='scatter',x='i_h100',y='i_cd'). Кстати, очень сложно ответить на вопрос, если вы не предоставите пример ввода и желаемых результатов. Например, теперь я должен угадать, каковы ваши имена столбцов. Я рекомендую вам отредактировать свой вопрос, чтобы добавить эту деталь.

Dan 21.06.2019 15:37

@Dan, спасибо за информацию, я здесь впервые, поэтому в следующий раз постараюсь сделать проще!

Heather Kay 21.06.2019 18:15

@HeatherKay нет проблем, я также рекомендую прочитать это: stackoverflow.com/help/минимально-воспроизводимый-пример, но предоставление примеров входных данных и желаемых результатов значительно облегчает понимание цели вопроса.

Dan 21.06.2019 19:13
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
2 358
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте .loc для подмножества данных, входящих в график.

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

# Make some dummy data
np.random.seed(42)
df = pd.DataFrame({'a':np.random.randint(0,365,20),
                   'b':np.random.rand(20),
                   'c':np.random.rand(20)})

# all data: plot of 'b' vs. 'c'
df.plot(kind='scatter', x='b', y='c')
plt.show()

# use .loc to subset data displayed based on value in 'a'
# can also use .loc to restrict values of 'b' displayed rather than plt.xlim
df.loc[df['a'].between(85,260) & (df['b'] < 0.5)].plot(kind='scatter', x='b', y='c')
plt.show()

Спасибо! Но на самом деле мне нужно ограничить данные не по оси Y. По оси y указана плотность, мне нужно удалить данные за определенные дни, прежде чем строить график высоты и плотности.

Heather Kay 21.06.2019 15:19

В этом случае используйте .loc, чтобы подмножить данные третьей переменной перед построением графика. Скоро отредактирую комментарий.

Brendan 21.06.2019 15:22

поэтому df.loc[(df['c'].between(85,260)].plot(kind='scatter',x='a',y‌​='b')

Heather Kay 21.06.2019 15:25

Вам нужно будет отредактировать свои переменные (см. stackoverflow.com/help/минимально-воспроизводимый-пример), но этот подход должен работать.

Brendan 21.06.2019 15:28

Также обратите внимание, что это не Удалить никаких записей из вашего фрейма данных. Он просто отображает подмножество этих записей. Таким образом, последующие операции с кадром данных будут использовать весь диапазон. Если вы хотите полностью удалить записи, вы можете использовать .drop.

Brendan 21.06.2019 15:29

@HeatherKay Рад, что это сработало. Если это так, было бы хорошо принять предоставленный ответ. Ваше здоровье.

Brendan 21.06.2019 15:31

Другие вопросы по теме