#python-3.x #pandas #dataframe #color-scheme #poker
#python-3.x #pandas #фрейм данных #цветовая схема #покер
Вопрос:
Мне нравится кодировать, и мне нравится играть в покер! Итак, я пытаюсь создать программу для отслеживания моей статистики покера.
Я создал таблицу диапазона покерных комбинаций, используя pandas, однако я не могу раскрасить ее в соответствии с руками, которые я склонен делать на 3 ставки больше по сравнению с другими.
В настоящее время мой фрейм данных выглядит так:
У меня есть список рук, которые я хочу отобразить на этой диаграмме (фрейме данных) в соответствии с их частотой. Допустим:
Hands = ["A A","K K","A Ks"....]
Чтобы дать представление, я хочу, чтобы моя диаграмма выглядела примерно так:
Здесь желтый показывает руки, которые я часто делаю 3-бет, красный показывает руки, которые я делаю 3-бет реже, чем желтый, а серый — руки, которые я делаю 3-бет редко.
Редактировать
Я смог получить желаемый результат. Ознакомьтесь с разделом ответов.
Комментарии:
1. Добро пожаловать в Stackoverflow (SO). Обратите внимание на одну вещь: как правило, на SO не публикуйте скриншоты и не делитесь кодом, который показывает ваши попытки.
2. Я буду иметь это в виду, спасибо. К счастью, я смог получить желаемый результат, используя тепловые карты.
Ответ №1:
Возможно, вам следует попробовать использовать style.background_gradient
in seaborn
. Вот пример, который вы могли бы адаптировать к своим потребностям.
import pandas as pd
import numpy as np
import seaborn as sns
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
df.iloc[3, 3] = np.nan
df.iloc[0, 2] = np.nan
cm = sns.light_palette("green", as_cmap=True)
df2 = df.style.background_gradient(cmap=cm)
df2
что дает что-то вроде этого:
Ответ №2:
Итак, я просто вычислил процент рук, которые я сделал 3-бет, и сохранил его в словаре
freq_percentage = dict()
for i in freq_each:
if(i in freq_each_raised):
freq_percentage[i] = freq_each_raised[i]/freq_each[i]
Здесь freq_each
freq_each_raised
хранится частота каждой раздачи, сохраняется частота каждой поднятой руки и freq_percentage
сохраняется процент времени, когда я поднял конкретную руку.
matrix = [[0 for i in range(13)] for j in range(13)]
for i in freq_percentage:
for m in range(13):
b = 0
for n in range(13):
if(chart[m][n]==i):
matrix[m][n]=round(freq_percentage[i],2)
b = 1
break
if(b):
break
hands_percentage = pd.DataFrame(matrix)
plt.figure(figsize=(14,7))
axs = sns.heatmap(hands_percentage, annot = chart, fmt = '',xticklabels=False, yticklabels=False)