Folha de cola em Python Pandas

Funções em Pandas do cotidiano de um analista, cientista e engenheiro de dados

Este artigo servirá de rápida consulta às funções comumentes usadas na manipulação de dados e Machine Learning. Não é uma lista abrangente de métodos, mas contém funções muito práticas e de grande aplicação.

1) configuração

Se você quiser executar esses exemplos por conta própria, baixe o conjunto de dados de recomendação de Anime do Kaggle, descompacte e carregue no Google Colab ou Jupyter Notebook

import pandas as pd
import numpy as np
anime = pd.read_csv('anime.csv')
rating = pd.read_csv('rating.csv')
anime_modified = anime.set_index('name')

2) importação

Carregar o CSV diretamente em um DataFrame. Às vezes, o carregamento de dados de um CSV também requer especificar alguns parâmetros.

Outra função semelhante também existe chamada para carregar arquivos excel.pd.read_excel

anime = pd.read_csv('anime.csv'

construir dataframe a partir de dados inseridos

df = pd.DataFrame([
[1,'Bob', 'Builder'],
[2,'Sally', 'Baker'],
[3,'Scott', 'Candle Stick Maker']],
columns = ['id','name', 'occupation'])
df.head()

copiar DataFrame (boa prática)

Útil quando for necessário alterar um DataFrame enquanto mantém uma cópia do original.

anime_copy = anime.copy(deep = True)

3) exportar dados

salvar em formato CSV

Isso é despejado no mesmo diretório que o notebook. Só estamos limitando às 10 primeiras linhas no exemplo. Novamente, também existe e funciona basicamente o mesmo processo para arquivos em formato excel.df.to_excel()

rating[:10].to_csv('saved_ratings.csv', index=False)

visualização e inspeção

Exibir os primeiros registros de um DataFrame:

anime.head(8)

contagem de linhas

Esta não é uma função pandas em si, mas a contagem de linhas pode ser muito útil

len(df)
#=> 3

contar linhas únicas

Contar valores únicos em uma coluna.

len(ratings['user_id'].unique())

obter informações do DataFrame

Útil para obter algumas informações gerais como cabeçalho, n° de entradas e tipo de dados por coluna. Uma função semelhante, mas menos útil, é que apenas fornece tipos de dados.df.dtypes

anime.info()
anime.dtypes

estatísticas

Realmente útil se o DataFram tiver vários valores numéricos.

anime.describe()

contagem de valores

Obtenha contagens de valores para uma determinada coluna.

anime.type.value_counts()

5) selecionar dados

obtenha uma lista ou série de valores para uma coluna.

anime['genre'].tolist()
anime['genre']

lista de valores a partir do índice

Crie uma lista de valores a partir do índice.

anime_modified.index.tolist()

lista de valores da coluna

anime.columns.tolist()

6) adicionar e dropar

Anexar nova coluna com um valor definido. Faço isso de vez em quando tenho conjuntos de teste e trem em 2 quadros de dados separados e quero marcar quais linhas estão relacionadas com o conjunto antes de combiná-los.

anime['train set'] = True

criar novo DataFrame a partir de um subconjunto de colunas

Útil quando se quer manter algumas colunas de um quadro de dados gigante e não quer especificar cada uma que você deseja soltar.

anime[['name','episodes']]

dropar colunas especificas

Útil quando você só precisa dropar algumas colunas específcias.

anime.drop(
['anime_id', 'genre', 'members']axis = 1).head()

adicionar linha com a soma de outras linhas

A parte interessante aqui é que adiciona os valores entre linhas. Alternativamente adiciona valores entre colunas.

A mesma lógica se aplica ao calcular contagens ou média, ou seja: .df.mean(axis=0)

df = pd.DataFrame([[1,'Bob', 8000], [2,'Sally', 9000], [3,'Scott', 20]],
columns = ['id','name', 'power level'])
df.append(df.sum(axis=0), ignore_index=True)

7) combinação de dataframes

Use-o se você tiver 2 DataFrames com as mesmas colunas e quiser combiná-los.

df1 = anime[0:2]
df2 = anime[2:4]
pd.concat([df1, df2], ignore_index = True)

mesclar dataframes

Isso funciona como um left join SQL, quando você tem 2 DataFrames

rating.merge(
anime,
left_on = ’anime_id’,
right_on = ’anime_id’,
suffixes = (‘_left’, ‘_right’))

8) filtro

Os valores do índice são os nomes do anime. Observe como usamos esses nomes para retornar valores específicos.

anime_modified.loc[['Gintama']]

recuperar registros por índices numerados

anime_modified.iloc[0:3]

consultar registros

Recuperar linhas onde o valor de uma coluna está em uma determinada lista. também funciona ao combinar em um único valor

anime[anime['type'].isin(['TV', 'Movie'])]

ortar Dataframe

Isso é como cortar uma lista.

anime[1:3]

filtrar por valor

Filtrar quadro de dados para linhas que atendam a uma condição.

anime[anime['rating'] > 8]

9) classificação

Classifique o Dataframe por valores em uma coluna.

anime.sort_values('rating', ascending=False)

10) agregação

Groupby e contagem. contar o número de registros para cada valor distinto em uma coluna.

anime.groupby('type').count()

Criar tabela pivô

Nada melhor do que uma tabela pivô para retornar um subconjunto de dados de um quadro de dados.

tmp_df = rating.copy()
tmp_df.sort_values('user_id', ascending=True, inplace=True)
tmp_df = tmp_df[tmp_df.user_id < 10]
tmp_df = tmp_df[tmp_df.anime_id < 30]
tmp_df = tmp_df[tmp_df.rating != -1]
pd.pivot_table(tmp_df, values='rating', index=['user_id'], columns=['anime_id'], aggfunc=np.sum, fill_value=0

11) Limpez

pivot = pd.pivot_table(tmp_df, 
values='rating',
index=['user_id'],
columns=['anime_id'], aggfunc=np.sum)
pivot.fillna(0)

amostrar um DataFrame

anime.sample(frac=0.25)

Obrigado.

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store