Ao tentar entender um grande DataFrame no Pandas, talvez seja necessário subconjunto por colunas e linhas. Neste tutorial, mostraremos os casos de uso mais comuns de particionamento de colunas do seu DataFrame.
Começaremos configurando nosso DataFrame de exemplo, o que faremos executando o seguinte código Python em nosso ambiente favorito (para simplificar, uso Anaconda e Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Agora, vamos examinar nossas primeiras linhas do Dataframe usando o método head().
languages.head()
Como você pode ver, este é um DataFrame bem simples que usaremos como exemplo neste post:
| |
língua |
avg_difficulty_level |
salário_médio |
formulários |
| 0 |
Pitão |
3 |
120 |
10 |
| 1 |
C Sustenido |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrando uma única coluna
Começaremos com o caso mais simples, que é subconjunto de uma coluna do nosso conjunto de dados. A execução do seguinte comando criará um objeto Series:
Por nome/etiqueta
languages["language"]
A saída é uma série:
0 Python
1 C Sustenido
2 Javascript
3 PHP
Nome: idioma, dtype: objeto
type(languages["language"])
pandas.core.series.Series
Por índice
O comando a seguir também retornará uma série contendo a primeira coluna
languages.iloc[:,0]
Selecionando várias colunas
Por nome
Ao passar uma lista de colunas, o Pandas retornará um DataFrame contendo parte dos dados.
languages[["language", "applications"]]
| |
língua |
formulários |
| 0 |
Pitão |
10 |
| 1 |
C Sustenido |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Por rótulo (com loc)
df.loc[:,["language","applications"]]
O resultado será semelhante.
Por índice
Agora vamos recuperar várias colunas usando o índice:
languages.iloc[: ,[0,3]]
| |
língua |
formulários |
| 0 |
Pitão |
10 |
| 1 |
C Sustenido |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Por condição
Nesse caso, mostraremos apenas as colunas cujo nome corresponde a uma expressão específica. Usaremos o método de filtro bastante útil :
languages.filter(axis = 1, like="avg")
Notas:
- também podemos filtrar por uma expressão regular específica (regex).
- Podemos aplicar o parâmetro axis=0 para filtrar por valor de linha específico.
Filtrar linhas específicas por condição
Aqui está uma maneira bastante direta de subconjunto do DataFrame de acordo com um valor de linha:
languages[(languages["applications"] > 15)]
Temos apenas um resultado:
languages[(languages["applications"] > 15)]
| |
língua |
avg_difficulty_level |
salário_médio |
formulários |
| 3 |
PHP |
1 |
80 |
20 |