Skip to content
Меню
ЗВЁЗДНЫЕ ВОЙНЫ ЭНЦИКЛОПЕДИЯ РОЛЕВОЙ ИГРЫ
  • Рисование
  • Советы начинающим
  • Как рисовать
  • Карандашом
  • Поэтапно
  • Уроки
ЗВЁЗДНЫЕ ВОЙНЫ
Главная » Разное » Панда рисунки по клеткам: Как нарисовать панду по клеточкам — картинки по клеточкам панда

Панда рисунки по клеткам: Как нарисовать панду по клеточкам — картинки по клеточкам панда

Posted on 24.04.202326.01.2023

Содержание

  • Визуализация данных Python для начинающих — Real Python
    • Настройка среды
    • Создайте свой первый участок с пандами
    • Заглянуть под капот: Matplotlib
    • Изучите свои данные
      • Распределения и гистограммы
      • Выбросы
    • Проверить корреляцию
    • Анализ категорийных данных
      • Группировка
      • Определение соотношений
      • Увеличение категорий
    • Заключение
    • Дополнительная литература
  • python — форматирование цвета ячейки в кадре данных pandas в соответствии с несколькими условиями

Визуализация данных Python для начинающих — Real Python

Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Plot With Pandas: Python Data Visualization Basics

Независимо от того, знакомитесь ли вы с набором данных или готовитесь опубликовать свои выводы, визуализация является важным инструментом. Популярная библиотека Python для анализа данных, pandas, предоставляет несколько различных вариантов визуализации ваших данных с помощью .участок() . Даже если вы находитесь в начале своего пути к пандам, вскоре вы будете создавать базовые графики, которые дадут ценную информацию о ваших данных.

В этом уроке вы узнаете:

  • Какие существуют типы графиков панд и когда их использовать
  • Как получить обзор набора данных с помощью гистограммы
  • Как обнаружить корреляцию с точечной диаграммой
  • Как анализировать разные категории и их соотношения

Настройка среды

Вы можете лучше всего следовать коду в этом руководстве в блокноте Jupyter. Таким образом, вы сразу увидите свои графики и сможете поиграть с ними.

Вам также понадобится рабочая среда Python, включая pandas. Если у вас его еще нет, то у вас есть несколько вариантов:

  • Если у вас есть более амбициозные планы, то скачайте дистрибутив Anaconda. Он огромный (около 500 МБ), но вы будете подготовлены для большинства работ по науке о данных.

  • Если вы предпочитаете минималистскую настройку, ознакомьтесь с разделом об установке Miniconda в разделе «Настройка Python для машинного обучения в Windows».

  • Если вы хотите придерживаться pip , установите библиотеки, обсуждаемые в этом руководстве, с помощью

    pip install pandas matplotlib . Вы также можете получить Jupyter Notebook с pip и установить jupyterlab .

  • Если вы не хотите выполнять какие-либо настройки, воспользуйтесь онлайн-пробной версией Jupyter Notebook.

После настройки среды вы готовы загрузить набор данных. В этом руководстве вы будете анализировать данные о специальностях колледжей, полученные из выборки микроданных общественного использования опроса американского сообщества 2010–2012 гг. Он послужил основой для Экономического руководства по выбору специальности в колледже, размещенного на веб-сайте FiveThirtyEight.

Сначала загрузите данные, передав URL-адрес загрузки в pandas.read_csv() :

>

>>

 В [1]: импортировать панды как pd
В [2]: download_url = (
   ...: "https://raw.githubusercontent.com/fivethirtyeight/"
   ...: "data/master/college-majors/recent-grads.csv"
   ...:)
В [3]: df = pd.read_csv(download_url)
В [4]: ​​введите (df)
Выход[4]: pandas.core.frame.DataFrame
 

Вызывая read_csv() , вы создаете DataFrame, который является основной структурой данных, используемой в pandas.

Теперь, когда у вас есть DataFrame, вы можете взглянуть на данные. Во-первых, вы должны настроить параметр display. max.columns , чтобы убедиться, что pandas не скрывает столбцы. Затем вы можете просмотреть первые несколько строк данных с помощью .head() :

.

>>>

 В [5]: pd.set_option("display.max.columns", None)
В [6]: df.head()
 

Вы только что отобразили первые пять строк DataFrame

df , используя .head() . Ваш вывод должен выглядеть так:

Количество строк, отображаемых функцией .head() по умолчанию, равно пяти, но вы можете указать любое количество строк в качестве аргумента. Например, чтобы отобразить первые десять строк, вы должны использовать df.head(10) .

Удалить рекламу

Создайте свой первый участок с пандами

Ваш набор данных содержит несколько столбцов, связанных с доходами выпускников по каждой специальности:

  • «Медиана» — средний заработок работающих полный рабочий день в течение всего года.
  • "P25th" — 25-й процентиль заработка.
  • "P75th" — это 75-й процентиль заработка.
  • "Звание" — звание майора по среднему заработку.

Давайте начнем с графика, отображающего эти столбцы. Во-первых, вам нужно настроить блокнот Jupyter для отображения графиков с помощью %matplotlib волшебная команда:

>>>

 В [7]: %matplotlib
Использование бэкэнда matplotlib: MacOSX
 

Волшебная команда %matplotlib настраивает блокнот Jupyter для отображения графиков с помощью Matplotlib. Стандартный графический бэкэнд Matplotlib используется по умолчанию, и ваши графики будут отображаться в отдельном окне.

Примечание: Вы можете изменить бэкенд Matplotlib, передав аргумент магической команде %matplotlib .

Например, встроенный бэкенд популярен для Jupyter Notebooks, поскольку он отображает график в самом блокноте, сразу под ячейкой, создающей график:

>>>

 В [7]: %matplotlib inline
 

Доступен ряд других бэкендов. Для получения дополнительной информации ознакомьтесь с учебным пособием Rich Outputs в документации IPython.

Теперь вы готовы сделать свой первый сюжет! Вы можете сделать это с помощью .plot() :

>>>

 В [8]: df.plot(x="Rank", y=["P25th", "Median", "P75th"])
Выход[8]: 
 

.plot() возвращает линейный график, содержащий данные из каждой строки в DataFrame. Значения по оси x представляют ранг каждого учреждения, а значения

"P25th" , "Median" и "P75th" нанесены на ось y.

Примечание: Если вы не используете блокнот Jupyter или оболочку IPython, вам нужно будет использовать 9Интерфейс 0010 pyplot из matplotlib для отображения графика.

Вот как показать рисунок в стандартной оболочке Python:

>>>

 >>> import matplotlib. pyplot as plt
>>> df.plot(x="Rank", y=["P25th", "Median", "P75th"])
>>> plt.show()
 

Обратите внимание, что вы должны сначала импортировать модуль pyplot из Matplotlib перед вызовом plt.show() для отображения графика.

Фигурка произведена .plot() по умолчанию отображается в отдельном окне и выглядит так:

Глядя на сюжет, можно сделать следующие наблюдения:

  • Средний доход уменьшается по мере снижения ранга. Это ожидаемо, поскольку ранг определяется средним доходом.

  • Некоторые специальности имеют большие разрывы между 25-м и 75-м процентилями. Люди с этими степенями могут зарабатывать значительно меньше или значительно больше среднего дохода.

  • Другие специальности имеют очень небольшие разрывы между 25-м и 75-м процентилями. Люди с этими степенями получают зарплату, очень близкую к среднему доходу.

Ваш первый график уже намекает, что в данных есть еще много интересного! Одни мейджоры имеют широкий диапазон заработка, другие — довольно узкий. Чтобы обнаружить эти различия, вы будете использовать несколько других типов графиков.

.plot() имеет несколько необязательных параметров. В частности, 9Параметр 0010 типа принимает одиннадцать различных строковых значений и определяет, какой тип графика вы создадите:

  1. "площадь" для площадных участков.
  2. "bar" для вертикальных гистограмм.
  3. "barh" для горизонтальных гистограмм.
  4. "коробка" для коробчатых диаграмм.
  5. "hexbin" для шестигранных графиков.
  6. "hist" для гистограмм.
  7. "kde" для диаграмм оценки плотности ядра.
  8. "density" является псевдонимом для "kde" .
  9. "line" для линейных графиков.
  10. "пирог" для круговых диаграмм.
  11. "разброс" для точечных диаграмм.

Значение по умолчанию: "строка" . Линейные графики, такие как тот, который вы создали выше, обеспечивают хороший обзор ваших данных. Вы можете использовать их для определения общих тенденций. Они редко дают сложную информацию, но могут подсказать, где увеличить масштаб.

Если вы не укажете параметр .plot() , он создаст линейный график с индексом по оси x и всеми числовыми столбцами по оси y. Хотя это полезное значение по умолчанию для наборов данных с несколькими столбцами, для набора данных по специальностям колледжа и его нескольких числовых столбцов это выглядит довольно беспорядочно.

Примечание: В качестве альтернативы передаче строк параметру типа объекта .plot() , Объекты DataFrame имеют несколько методов, которые можно использовать для создания различных типов графиков, описанных выше:

  1. . площадь()
  2. .бар()
  3. .барх()
  4. .ящик()
  5. .hexbin()
  6. .hist()
  7. .kde()
  8. .плотность()
  9. .строка()
  10. .пиг()
  11. .разброс()

В этом руководстве вы будете использовать интерфейс .plot() и передавать строки в вид параметра . Вам также предлагается попробовать методы, упомянутые выше.

Теперь, когда вы создали свой первый график панд, давайте подробнее рассмотрим, как работает .plot() .

Удалить рекламу

Заглянуть под капот: Matplotlib

Когда вы вызываете .plot() для объекта DataFrame , Matplotlib создает график под капотом.

Чтобы убедиться в этом, попробуйте два фрагмента кода. Сначала создайте график с помощью Matplotlib, используя два столбца вашего DataFrame:

>>>

 В [9]: импортировать matplotlib.pyplot как plt
В [10]: plt.plot(df["Ранг"], df["P75th"])
Выход[10]: []
 

Сначала вы импортируете модуль matplotlib.pyplot и переименовываете его в plt . Затем вы вызываете plot() и передаете объекту DataFrame столбец «Rank» в качестве первого аргумента и столбец «P75th» в качестве второго аргумента.

Результатом является линейный график, отображающий 75-й процентиль по оси Y в зависимости от ранга по оси X:

Вы можете создать точно такой же график, используя метод объекта DataFrame .plot() :

>>>

 В [11]: df.plot(x="Rank", y="P75th")
Выход[11]: 
 

. plot() — это оболочка для pyplot.plot() , и результатом является график, идентичный тому, который вы создали с помощью Matplotlib:

Вы можете использовать как pyplot.plot() , так и df.plot() для создания одного и того же графика из столбцов Объект DataFrame . Однако, если у вас уже есть экземпляр DataFrame , то df.plot() предлагает более чистый синтаксис, чем pyplot.plot() .

Примечание: Если вы уже знакомы с Matplotlib, вас может заинтересовать параметр kwargs для .plot() . Вы можете передать ему словарь, содержащий аргументы ключевых слов, которые затем будут переданы в бэкэнд построения графиков Matplotlib.

Для получения дополнительной информации о Matplotlib ознакомьтесь с Python Plotting With Matplotlib.

Теперь, когда вы знаете, что метод .plot() объекта DataFrame является оболочкой для pyplot. plot() Matplotlib , давайте углубимся в различные типы графиков, которые вы можете создать, и как их сделать.

Изучите свои данные

Следующие графики дадут вам общее представление о конкретном столбце вашего набора данных. Во-первых, вы посмотрите на распределение свойства с помощью гистограммы. Затем вы познакомитесь с некоторыми инструментами для изучения выбросов.

Распределения и гистограммы

DataFrame — не единственный класс в pandas с методом .plot() . Как это часто бывает в пандах, объект серии обеспечивает аналогичную функциональность.

Вы можете получить каждый столбец DataFrame как объект серии . Вот пример использования столбца «Медиана» кадра данных, который вы создали из основных данных колледжа:

>>>

 В [12]: median_column = df["Median"]
В [13]: type(median_column)
Вышло[13]: pandas.core.series. Series
 

Теперь, когда у вас есть объект Series , вы можете создать для него график. Гистограмма — это хороший способ визуализировать распределение значений в наборе данных. Гистограммы группируют значения в интервала и отображают количество точек данных, значения которых находятся в определенном интервале.

Создадим гистограмму для столбца "Медиана" :

>>>

 В [14]: median_column.plot(kind="hist")
Выход[14]: 
 

Вы вызываете .plot() для серии median_column и передаете строку "hist" параметру типа . Вот и все!

При вызове .plot() вы увидите следующую цифру:

На гистограмме показаны данные, сгруппированные по десяти ячейкам в диапазоне от 20 000 до 120 000 долларов, и каждая ячейка имеет ширину , равную 10 000 долларов. Гистограмма имеет форму, отличную от формы нормального распределения, которая имеет форму симметричного колокола с пиком посередине.

Однако гистограмма медианных данных имеет пик слева ниже 40 000 долларов. Хвост тянется далеко вправо и говорит о том, что действительно есть месторождения, крупные компании могут рассчитывать на значительно более высокие доходы.

Удалить рекламу

Выбросы

Вы заметили тот одинокий маленький ящик на правом краю раздачи? Кажется, что у одной точки данных есть своя категория. Майоры в этой области получают отличную зарплату по сравнению не только со средней, но и с занявшей второе место. Хотя это не является его основной целью, гистограмма может помочь вам обнаружить такой выброс. Давайте еще немного исследуем выброс:

  • Какие основные направления представляет этот выброс?
  • Насколько велик его край?

В отличие от первого обзора, вы хотите сравнить только несколько точек данных, но хотите увидеть более подробную информацию о них. Для этого барограмма является отличным инструментом. Сначала выберите пять специальностей с самым высоким средним доходом. Вам понадобится два шага:

  1. Для сортировки по столбцу «Медиана» используйте .sort_values() и укажите имя столбца, по которому вы хотите выполнить сортировку, а также направление по возрастанию=ложь .
  2. Чтобы получить первые пять элементов списка, используйте .head() .

Давайте создадим новый DataFrame с именем top_5 :

>>>

 В [15]: top_5 = df.sort_values(by="Median", по возрастанию=False).head()
 

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

>>>

 В [16]: top_5.plot(x="Major", y="Median", kind="bar", rot=5, fontsize=4)
Выход[16]: 
 

Обратите внимание, что вы используете параметры rot и fontsize для поворота и изменения размера меток оси X, чтобы они были видны. Вы увидите график с 5 барами:

Этот график показывает, что средняя заработная плата инженеров-нефтяников более чем на 20 000 долларов выше, чем у остальных. Доходы крупных компаний, занявших второе-четвертое места, относительно близки друг к другу.

Если у вас есть точка данных с гораздо более высоким или более низким значением, чем у остальных, вам, вероятно, захочется изучить ее немного подробнее. Например, вы можете просмотреть столбцы, содержащие связанные данные.

Давайте исследуем всех специалистов, чья средняя зарплата превышает 60 000 долларов. Во-первых, вам нужно отфильтровать эти майоры по маске df[df["Median"] > 60000] . Затем вы можете создать еще одну гистограмму, показывающую все три столбца доходов:

.

>>>

 В [17]: top_medians = df[df["Медиана"] > 60000].sort_values("Медиана")
В [18]: top_medians.plot(x="Major", y=["P25th", "Median", "P75th"], kind="bar")
Выход[18]: 
 

Вы должны увидеть график с тремя тактами на мажор, например:

25-й и 75-й процентили подтверждают то, что вы видели выше: специальности инженеров-нефтяников были безусловно самыми высокооплачиваемыми недавними выпускниками.

Почему вас так интересуют выбросы в этом наборе данных? Если вы студент колледжа и размышляете, какую специальность выбрать, у вас есть по крайней мере одна довольно очевидная причина. Но выбросы также очень интересны с точки зрения анализа. Они могут указывать не только на отрасли с обилием денег, но и на недостоверные данные.

Неверные данные могут быть вызваны любым количеством ошибок или упущений, в том числе выходом из строя датчика, ошибкой при ручном вводе данных или участием пятилетнего ребенка в фокус-группе, предназначенной для детей в возрасте десяти лет и старше. Исследование выбросов — важный шаг в очистке данных.

Даже если данные верны, вы можете решить, что они настолько отличаются от остальных, что производят больше шума, чем пользы. Предположим, вы анализируете данные о продажах небольшого издательства. Вы группируете доходы по регионам и сравниваете их с тем же месяцем предыдущего года. Затем совершенно неожиданно издатель выпускает национальный бестселлер.

Это приятное событие делает ваш отчет бессмысленным. С включенными данными бестселлера продажи растут везде. Выполнение того же анализа без выбросов предоставит более ценную информацию, позволяя вам увидеть, что в Нью-Йорке ваши показатели продаж значительно улучшились, но в Майами они ухудшились.

Удалить рекламу

Проверить корреляцию

Часто требуется проверить, связаны ли два столбца набора данных. Если вы выберете специальность с более высоким средним заработком, у вас также будет меньше шансов остаться без работы? В качестве первого шага создайте точечную диаграмму с этими двумя столбцами:

>>>

 В [19]: df.plot(x="Median", y="Unemployment_rate", kind="scatter")
Out[19]: 
 

Вы должны увидеть довольно случайный график, например:

Беглый взгляд на этот рисунок показывает, что между заработком и уровнем безработицы нет существенной корреляции.

Хотя точечный график — отличный инструмент для получения первого впечатления о возможной корреляции, он, конечно, не является окончательным доказательством связи. Для обзора корреляций между различными столбцами вы можете использовать .корр() . Если вы подозреваете корреляцию между двумя значениями, в вашем распоряжении есть несколько инструментов, чтобы проверить свою догадку и измерить, насколько сильна корреляция.

Однако имейте в виду, что даже если существует корреляция между двумя значениями, это все равно не означает, что изменение одного приведет к изменению другого. Другими словами, корреляция не подразумевает причинно-следственной связи.

Анализ категорийных данных

Для обработки больших объемов информации человеческий разум сознательно и бессознательно сортирует данные по категориям. Этот метод часто полезен, но он далеко не безупречен.

Иногда мы помещаем в категорию вещи, которые при дальнейшем рассмотрении оказываются не очень похожими. В этом разделе вы познакомитесь с некоторыми инструментами для изучения категорий и проверки того, имеет ли смысл данная категоризация.

Многие наборы данных уже содержат некоторую явную или неявную категоризацию. В текущем примере 173 специальности разделены на 16 категорий.

Группировка

Основным применением категорий является группировка и агрегация. Вы можете использовать .groupby() , чтобы определить, насколько популярна каждая из категорий в основном наборе данных колледжа:

>>>

 В [20]: cat_totals = df.groupby("Major_category")["Total"].sum().sort_values()
В [21]: cat_totals
Вышли[21]:
Major_category
Междисциплинарный 12296.0
Сельское хозяйство и природные ресурсы 75620.0
Право и государственная политика 179107.0
Физические науки 185479.0
Промышленное искусство и потребительские услуги 229792,0
Компьютеры и математика 299008.0
Искусство 357130.0
Коммуникации и журналистика 392601.0
Биология и науки о жизни 453862. 0
Здоровье 463230.0
Психология и социальная работа 481007.0
Общественные науки 529966.0
Машиностроение 537583.0
Образование 559129.0
Гуманитарные науки и гуманитарные науки 713468.0
Бизнес 1302376.0
Имя: Итого, dtype: float64
 

С помощью .groupby() вы создаете объект DataFrameGroupBy . С помощью .sum() вы создаете серию.

Давайте нарисуем график с горизонтальной полосой, показывающий все итоги категорий в cat_totals :

>>>

 В [22]: cat_totals.plot(kind="barh", fontsize=4)
Выход[22]: 
 

Вы должны увидеть график с одной горизонтальной полосой для каждой категории:

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

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

Удалить рекламу

Определение соотношений

Вертикальные и горизонтальные гистограммы часто являются хорошим выбором, если вы хотите увидеть разницу между своими категориями. Если вас интересуют соотношения, то круговые диаграммы — отличный инструмент. Однако, поскольку cat_totals содержит несколько меньших категорий, создание круговой диаграммы с cat_totals.plot(kind="pie") создаст несколько крошечных срезов с перекрывающимися метками.

Чтобы решить эту проблему, вы можете объединить меньшие категории в одну группу. Объедините все категории с общим количеством менее 100 000 в категорию под названием «Другое» , затем создайте круговую диаграмму:

>>>

 В [23]: small_cat_totals = cat_totals[cat_totals < 100_000]
В [24]: big_cat_totals = cat_totals[cat_totals > 100_000]
В [25]: # Добавление нового пункта "Другое" с суммой мелких категорий
В [26]: small_sums = pd. Series([small_cat_totals.sum()], index=["Другое"])
В [27]: big_cat_totals = big_cat_totals.append(small_sums)
В [28]: big_cat_totals.plot(kind="pie", label="")
Выход[28]: 
 

Обратите внимание, что вы включили аргумент label="" . По умолчанию pandas добавляет метку с именем столбца. Часто это имеет смысл, но в данном случае это только добавит шума.

Теперь вы должны увидеть такую ​​круговую диаграмму:

Категория «Другое» по-прежнему составляет лишь очень маленький кусок пирога. Это хороший признак того, что объединение этих небольших категорий было правильным выбором.

Увеличение категорий

Иногда вы также хотите проверить, имеет ли смысл определенная категоризация. Являются ли члены категории более похожими друг на друга, чем на остальной набор данных? Опять же, дистрибутив — хороший инструмент для получения первого обзора. Как правило, мы ожидаем, что распределение категории будет похоже на нормальное распределение, но будет иметь меньший диапазон.

Создайте график гистограммы, показывающий распределение медианного дохода для инженерных специальностей:

>>>

 В [29]: df[df["Major_category"] == "Engineering"]["Median"].plot(kind="hist")
Выход[29]: 
 

Вы получите гистограмму, которую можно сравнить с гистограммой всех основных валют с самого начала:

Диапазон основных медианных доходов несколько меньше, начиная с 40 000 долларов. Распределение ближе к нормальному, хотя его пик все же находится слева. Так что, даже если вы решили выбрать специальность в инженерной категории, было бы разумно погрузиться глубже и более тщательно проанализировать свои варианты.

Заключение

В этом руководстве вы узнали, как запустить визуализацию набора данных с помощью Python и библиотеки pandas. Вы видели, как некоторые базовые графики могут дать вам представление о ваших данных и направить ваш анализ.

В этом уроке вы узнали, как:

  • Получите обзор распределения вашего набора данных с помощью гистограммы
  • Обнаружение корреляции с точечной диаграммой
  • Анализ категорий с гистограммы и их соотношение с круговыми диаграммами
  • Определите, какой участок наиболее подходит для вашей текущей задачи

Используя . plot() и небольшой DataFrame, вы открыли довольно много возможностей для представления ваших данных. Теперь вы готовы опираться на эти знания и открывать для себя еще более сложные визуализации.

Если у вас есть вопросы или комментарии, оставьте их в разделе комментариев ниже.

Удалить рекламу

Дополнительная литература

В то время как pandas и Matplotlib упрощают визуализацию ваших данных, существуют бесконечные возможности для создания более сложных, красивых или привлекательных графиков.

Отличное место для начала — раздел графики документации pandas DataFrame. Он содержит как отличный обзор, так и несколько подробных описаний многочисленных параметров, которые вы можете использовать с вашими кадрами данных.

Если вы хотите лучше понять основы построения графиков с помощью панд, познакомьтесь поближе с Matplotlib. Хотя документация иногда может быть ошеломляющей, Anatomy of Matplotlib отлично справляется с введением некоторых дополнительных функций.

Если вы хотите произвести впечатление на свою аудиторию интерактивными визуализациями и побудить их самостоятельно изучить данные, сделайте Bokeh своей следующей остановкой. Вы можете найти обзор функций Bokeh в интерактивной визуализации данных в Python с Bokeh. Вы также можете настроить pandas для использования Bokeh вместо Matplotlib с помощью библиотеки pandas-bokeh

.

Если вы хотите создать визуализацию для статистического анализа или для научной статьи, попробуйте Seaborn. Вы можете найти краткий урок о Seaborn в Plotting Histogram Plotting.

Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Plot With Pandas: основы визуализации данных Python

python — форматирование цвета ячейки в кадре данных pandas в соответствии с несколькими условиями

спросил 5 лет, 8 месяцев назад

Изменено 3 года, 8 месяцев назад

Просмотрено 29 тысяч раз

Я пытаюсь отформатировать цвет ячейки определенного столбца во фрейме данных, но мне не удается сделать это в соответствии с несколькими условиями.

Это мой фрейм данных (df):

 Имя ID Cel Дата
0 Диего b000000005 7878 2565-05-31 20:53:00
1 Луис b000000015 6464 2017-05-11 20:53:00
2 Видаль b000000002 1100 08.05.2017 20:53:00
3 Джон b000000011 4545 06.06.2017 20:53:00
4 Юсеф b000000013 1717 06.06.2017 20:53:00
 

Я хочу, чтобы значения в столбце «Дата» меняли цвет в соответствии со следующими условиями:

, если дата < datetime.now():
        цвет = «зеленый»
    Элиф дата > datetime.now():
        дата = «желтый»
    elif date > (datetime.now() + timedelta (дни = 60)):
        цвет = «красный»
 

Это мой текущий код:

 def color(val):
    если val < datetime.now():
        цвет = «зеленый»
    elif val > datetime.now():
        цвет = «желтый»
    elif val > (datetime.now() + timedelta (дни = 60)):
        цвет = «красный»
    вернуть 'фоновый цвет: %s' % цвет
df.style.apply (цвет, подмножество = ['Fecha'])
 

Я получаю следующую ошибку:

ValueError: («Истинное значение серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all().», «произошло по индексу Fecha ')

Результат:

 Out[65]: 
 

Будем признательны за любую помощь.

  • питон
  • панды
  • форматирование

4

Использовать applymap :

 из импорта даты и времени, даты и времени, дельта времени
импортировать панд как pd
name = ['Диего', 'Луис', 'Видаль', 'Джон', 'Юсеф']
идентификатор = ['b000000005', 'b000000015', 'b000000002', 'b000000011', 'b000000013']
цел = [7878, 6464, 1100, 4545, 1717]
date = pd.to_datetime(['2017-05-31 20:53:00', '2017-05-11 20:53:00', '2017-05-08 20:53:00',
 '2017-06-06 20:53:00', '2017-06-06 20:53:00'])
df = pd.DataFrame({'Имя':имя,'ID':id,'Cel':cel,'Date':date})
определяемый цвет (значение):
 если val < datetime.now():
 цвет = «зеленый»
 elif val > datetime.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • Для начинающих
  • Как рисовать
  • Карандаш
  • Поэтапно
  • Разное
  • Советы
  • Срисовка
  • Уроки
2025 © Все права защищены.