Este artigo foi compartilhado pela Huawei Cloud Community " Usando Seaborn para implementar gráficos estatísticos avançados de boxplots para exploração de relacionamento multivariável ", autor: Lemony Hug.
No campo da ciência de dados e visualização de dados, Seaborn é uma biblioteca de visualização Python popular. Ele é construído com base no Matplotlib, fornecendo uma interface gráfica mais simples e bonita, e também possui algumas funções avançadas de gráficos estatísticos. Este artigo apresentará como usar o Seaborn para implementar alguns gráficos estatísticos avançados e fornecer exemplos de código correspondentes.
Instale o Seaborn
Primeiro, certifique-se de ter o Seaborn instalado. Você pode instalá-lo usando pip:
pip instalar seaborn
Importe as bibliotecas necessárias
Antes de começar, precisamos importar o Seaborn e algumas outras bibliotecas de processamento e visualização de dados comumente usadas:
importar seaborn como sns importar matplotlib.pyplot como plt importar numpy como np importar pandas como pd
Gráfico de caixa
O boxplot é um gráfico estatístico comumente usado para exibir a distribuição de dados. Seaborn fornece uma interface simples e fácil de usar para desenhar box plots.
# Gera dados aleatórios np.random.seed(0) dados = np.random.normal (loc = 0, escala = 1, tamanho = 100) # Desenhar gráfico de caixa sns.boxplot(dados=dados) plt.title('Box Plot de dados aleatórios') plt.show()
Neste exemplo, geramos um conjunto aleatório de dados e traçamos um boxplot usando a função. Por meio deste gráfico, podemos compreender intuitivamente a distribuição dos dados, incluindo mediana, quartis e outliers. sns.boxplot()
Enredo de violino
O gráfico de violino é um gráfico que combina boxplots e estimativa de densidade de kernel para exibir a distribuição de dados de forma mais intuitiva.
# Gera dados aleatórios np.random.seed(0) dados1 = np.random.normal(loc=0, escala=1, tamanho=100) dados2 = np.random.normal (loc = 2, escala = 1,5, tamanho = 100) dados = np.concatenate([dados1, dados2]) rótulos = ['Grupo 1'] * 100 + ['Grupo 2'] * 100 # Desenhar enredo de violino sns.violinplot(x=rótulos, y=dados) plt.title('Trama de violino de dois grupos') plt.show()
Neste exemplo, geramos dois conjuntos diferentes de dados aleatórios e traçamos um gráfico de violino usando a função. Através deste gráfico, podemos comparar a distribuição dos dois conjuntos de dados e observar as diferenças. sns.violinplot()
Mapa de calor
Um mapa de calor é um gráfico que usa cores para representar uma matriz de dados, geralmente usado para mostrar correlação ou densidade de dados.
# Gera dados aleatórios np.random.seed(0) dados = np.random.rand(10, 10) # Desenhar mapa de calor sns.heatmap(dados, annot=True, cmap='verde') plt.title('Mapa de calor de dados aleatórios') plt.show()
Neste exemplo, geramos uma matriz aleatória 10x10 e usamos a função para desenhar um mapa de calor. Através deste gráfico, podemos compreender intuitivamente a correlação entre os dados e a distribuição dos dados. sns.heatmap()
Gráfico de estimativa de densidade do kernel
O gráfico de estimativa de densidade do kernel é um método não paramétrico para estimar a função de densidade de dados, suavizando os dados observados para gerar uma curva de densidade de probabilidade contínua.
# Gera dados aleatórios np.random.seed(0) dados = np.random.normal (loc = 0, escala = 1, tamanho = 100) # Desenhar mapa de estimativa de densidade do kernel sns.kdeplot(dados, sombra = Verdadeiro) plt.title('Gráfico de estimativa de densidade do kernel de dados aleatórios') plt.show()
Neste exemplo, geramos um conjunto de dados aleatórios e traçamos a estimativa de densidade do kernel usando a função. Este gráfico mostra a distribuição de densidade de probabilidade dos dados e nos ajuda a compreender melhor as características de distribuição dos dados. sns.kdeplot()
Gráfico de pares
Um diagrama de relacionamento pareado é um tipo de diagrama usado para visualizar relacionamentos entre variáveis em um conjunto de dados e é útil para análise exploratória de dados.
# Gera conjunto de dados aleatórios np.random.seed(0) dados = pd.DataFrame(np.random.randn(100, 4), colunas=['A', 'B', 'C', 'D']) # Desenhar um diagrama de relacionamento entre pares sns.pairplot(dados) plt.suptitle('Gráfico de pares de dados aleatórios', y=1,02) plt.show()
Neste exemplo, geramos um conjunto de dados aleatórios e usamos a função para traçar o relacionamento entre pares. Este gráfico mostra a relação entre cada duas variáveis no conjunto de dados, incluindo gráficos de dispersão e gráficos de distribuição univariada, ajudando a descobrir padrões e correlações entre variáveis. sns.pairplot()
Mapa de agrupamento
Um diagrama de cluster é um diagrama usado para exibir as semelhanças entre variáveis em um conjunto de dados. Variáveis semelhantes são exibidas em grupos por meio de um algoritmo de cluster.
# Gera conjunto de dados aleatórios np.random.seed(0) dados = pd.DataFrame(np.random.rand(10, 10), colunas=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H ', 'EU J']) # Desenhar diagrama de cluster sns.clustermap(dados, cmap='viridis') plt.title('Mapa de cluster de dados aleatórios') plt.show()
Neste exemplo, geramos um conjunto de dados aleatórios e plotamos os clusters usando a função. Este gráfico mostra as semelhanças entre variáveis no conjunto de dados e exibe variáveis semelhantes em grupos por meio de um algoritmo de agrupamento, ajudando a descobrir padrões e estruturas entre variáveis. sns.clustermap()
Mapa de cluster
O mapa de calor de cluster é um mapa de calor baseado em algoritmo de cluster hierárquico, que agrupa dados e os reorganiza de acordo com os resultados do cluster para melhor exibir a estrutura e a correlação dos dados.
# Gera dados aleatórios np.random.seed(0) dados = np.random.rand(10, 10) # Desenhar mapa de calor de cluster sns.clustermap(dados, cmap='coolwarm') plt.title('Mapa de cluster de dados aleatórios') plt.show()
Neste exemplo, geramos uma matriz aleatória 10x10 e traçamos um mapa de calor do cluster usando a função. Através deste gráfico, podemos ver claramente as relações de agrupamento entre os dados e as semelhanças entre os diferentes pontos de dados. sns.clustermap()
Gráfico de dispersão de classificação (Pairplot)
Um gráfico de dispersão categórica é um gráfico que exibe a relação entre múltiplas variáveis ao mesmo tempo. É frequentemente usado para explorar a correlação entre diferentes variáveis em um conjunto de dados.
#Carregar conjunto de dados de amostra íris = sns.load_dataset('íris') # Desenhe um gráfico de dispersão de classificação sns.pairplot(íris, matiz='espécie', marcadores=['o', 's', 'D']) plt.title('Parplot do conjunto de dados Iris') plt.show()
Neste exemplo, usamos o conjunto de dados de íris que acompanha o Seaborn e usamos a função para desenhar um gráfico de dispersão de classificação. Com este gráfico, podemos ver rapidamente as diferenças nas características entre as diferentes espécies de íris, bem como as correlações entre as diferentes características. sns.pairplot()
Gráfico de série temporal
Um gráfico de série temporal é um gráfico usado para exibir dados de série temporal e geralmente é usado para analisar tendências e periodicidade de dados ao longo do tempo.
# Gerar dados de série temporal datas = pd.date_range(início='2022-01-01', fim='2022-12-31') dados = np.random.randn(len(datas)) #Cria DataFrame df = pd.DataFrame({'Data': datas, 'Valor': dados}) # Desenhar gráfico de série temporal sns.lineplot(x='Data', y='Valor', dados=df) plt.title('Gráfico de série temporal de dados aleatórios') plt.xlabel('Data') plt.ylabel('Valor') plt.show()
Neste exemplo, geramos dados de série temporal aleatórios e traçamos a série temporal usando a função. Através deste gráfico, podemos ver claramente as tendências e a periodicidade dos dados ao longo do tempo. sns.lineplot()
Paletas de cores avançadas
Seaborn fornece uma rica função de paleta que pode ajudar os usuários a escolher esquemas de cores apropriados em gráficos para destacar pontos-chave ou aprimorar os efeitos de visualização.
# Use paleta avançada paleta_atual = sns.color_palette('husl', 5) # Desenhe um histograma sns.barplot(x=np.arange(5), y=np.random.rand(5), paleta=paleta_atual) plt.title('Bar Plot com paleta de cores avançada') plt.show()
Neste exemplo, usamos uma função para selecionar uma paleta Husl e geramos uma paleta de 5 cores. Em seguida, usamos essa paleta para desenhar um histograma para demonstrar o efeito. sns.color_palette()
Estilos de plotagem personalizados
Seaborn permite aos usuários personalizar a aparência dos gráficos definindo estilos diferentes para atender às necessidades individuais.
# Definir estilo personalizado sns.set_style('whitegrid') # Desenhe um gráfico de dispersão sns.scatterplot(x=np.random.randn(100), y=np.random.randn(100)) plt.title('Gráfico de dispersão com estilo personalizado') plt.show()
Neste exemplo, usamos uma função para definir o estilo do gráfico como uma grade branca e desenhar um gráfico de dispersão para demonstrar seu efeito. sns.set_style()
Desenho de vários painéis (grades de facetas)
Seaborn fornece a função de plotagem de vários painéis, que pode exibir vários subparcelas ao mesmo tempo para comparar melhor o relacionamento entre diferentes subconjuntos.
#Carregar conjunto de dados de amostra dicas = sns.load_dataset('dicas') #Criar objeto FacetGrid g = sns.FacetGrid(dicas, col='tempo', linha='fumante') # Desenhar enredo de violino g.map(sns.violinplot, 'total_bill') plt.show()
Neste exemplo, usamos funções para criar um objeto FacetGrid e desenhar gráficos de violino em diferentes subgráficos para mostrar a distribuição de dados entre diferentes subconjuntos. sns.FacetGrid()
Comparação de distribuição de dados (comparação de distribuição)
Seaborn fornece várias maneiras de comparar diferenças entre diferentes distribuições de dados, como usar estimativa de densidade de kernel ou histogramas.
#Carregar conjunto de dados de amostra íris = sns.load_dataset('íris') # Desenhar mapa de estimativa de densidade do kernel sns.kdeplot(data=íris, x='sepal_length', hue='espécie', fill=True) plt.title('Comparação de distribuição do comprimento da sépala') plt.show()
Neste exemplo, usamos a função para traçar estimativas de densidade de núcleo de comprimentos de sépalas entre espécies no conjunto de dados de íris para comparar suas distribuições. sns.kdeplot()
Visualização Agrupada
Seaborn pode exibir facilmente o agrupamento de dados, como usar variáveis categóricas para agrupar e visualizar dados.
#Carregar conjunto de dados de amostra titânico = sns.load_dataset('titânico') # Desenhar gráficos de caixas de classificação sns.boxplot(dados=titanic, x='classe', y='idade', matiz='sexo') plt.title('Grupo de caixa agrupada de idade por classe e sexo') plt.show()
Neste exemplo, usamos funções para representar graficamente os efeitos da idade em diferentes classes de cabine e gêneros no conjunto de dados do Titanic para comparar suas distribuições. sns.boxplot()
Explorando relacionamentos multivariados
Seaborn fornece várias maneiras de explorar relacionamentos entre múltiplas variáveis, como usar matrizes de gráficos de dispersão ou gráficos de relacionamento de pares.
#Carregar conjunto de dados de amostra íris = sns.load_dataset('íris') # Desenhar uma matriz de gráfico de dispersão sns.pairplot(dados=íris, matiz='espécie') plt.title('Pairplot para Explorar Relacionamentos Multivariados') plt.show()
Neste exemplo, usamos funções para traçar relações de pares entre diferentes recursos no conjunto de dados da íris para explorar as relações multivariadas entre eles. sns.pairplot()
Resumir
Este artigo apresenta como usar o Seaborn para implementar gráficos estatísticos avançados e fornece exemplos de código avançados. Primeiro, aprendemos como desenhar gráficos estatísticos comuns, incluindo gráficos de caixa, gráficos de violino, mapas de calor, etc., por meio dos quais a distribuição e correlação de dados podem ser exibidas visualmente. A seguir, exploramos recursos avançados, como paletas de cores, estilos de gráficos personalizados, desenhos de vários painéis, etc., que podem ajudar os usuários a personalizar a aparência dos gráficos e aprimorar os efeitos de visualização. Em seguida, introduzimos alguns aplicativos avançados, como comparação de distribuição de dados, exibição de grupos de dados, exploração de relacionamento multivariável, etc. Esses métodos podem ajudar os usuários a obter uma compreensão mais profunda dos relacionamentos e padrões entre os dados. Ao estudar este artigo, os leitores podem dominar as habilidades básicas de uso do Seaborn para visualização de dados e ser capazes de usar suas funções ricas e interfaces flexíveis para análise e exploração de dados. Os recursos poderosos e a interface simples do Seaborn o tornam uma das ferramentas indispensáveis para cientistas e analistas de dados.
Clique para seguir e conhecer as novas tecnologias da Huawei Cloud o mais rápido possível~
Os recursos piratas de "Celebrating More Than Years 2" foram carregados no npm, fazendo com que o npmmirror tivesse que suspender o serviço unpkg da Microsoft na China fez as malas coletivamente e foi para os Estados Unidos, envolvendo centenas de pessoas . biblioteca de visualização front-end e o conhecido projeto de código aberto ECharts do Baidu - "indo para o mar" para apoiar os golpistas de peixes usaram o TeamViewer para transferir 3,98 milhões! O que os fornecedores de desktop remoto devem fazer? Zhou Hongyi: Não resta muito tempo para o Google. Recomenda-se que todos os produtos sejam de código aberto. Um ex-funcionário de uma conhecida empresa de código aberto deu a notícia: Após ser desafiado por seus subordinados, o líder técnico ficou furioso e. demitiu a funcionária grávida. O Google mostrou como executar o ChromeOS em uma máquina virtual Android. Por favor, me dê alguns conselhos: qual é o papel do time.sleep(6) aqui? A Microsoft responde aos rumores de que a equipe de IA da China está "fazendo as malas para os Estados Unidos" Comentários do People's Daily Online sobre a cobrança semelhante a matryoshka do software de escritório: Somente resolvendo ativamente "conjuntos" podemos ter um futuro