O último artigo introduziu o uso das funções básicas do Pandas.Este artigo apresenta principalmente as funções de filtragem condicional e classificação dos Pandas, também com a ajuda de um pequeno estojo!
1. Leia os dados
Primeiro, use a função read_csv () para obter os dados. Esses dados são os dados de uma categoria de produto, que tem vários atributos como quantidade (classe), nome (nome), descrição (descrição), preço (preço):
import pandas as pd
url = "https://raw.githubusercontent.com/justmarkham/DAT8/master/data/chipotle.tsv"
chipo = pd.read_csv(url,sep = '\t')
chipo
2. Altere o tipo de dados e o nome do caractere de uma coluna
Há um caractere "$" na coluna de preço nos dados lidos. Ao processar dados, esse símbolo precisa ser removido. Existem duas maneiras:
1. Substituir lista e série; primeiro formate cada dado em uma determinada coluna para obter a lista e, em seguida, atribua a lista à coluna que precisa ser substituída;
prices = [float(value[1:-1]) for value in chipo.item_price]
chipo.item_price = prices
2. Use as funções apply () e lambda para substituir;
chipo['item_price'] = chipo['item_price'].apply(lambda x:float(x[1:-1]))
3. Elimine dados repetidos em várias colunas
A redundância de dados ocorre frequentemente durante o processamento de dados. Neste momento, é necessário eliminar os dados redundantes nos dados antecipadamente (o fenômeno de várias colunas de dados em uma linha). A função usada é drop_duplicates (['nome da coluna 1', 'nome da coluna 2']) função
O que é removido aqui são os dados duplicados nas três colunas de item_name, quantidade e escolha_descrição:
chipo_filtered = chipo.drop_duplicates(['item_name','quantity','choice_description'])
chipo_filtered
4. Triagem de condição
1. Filtre os dados cujo valor da quantidade é 1:
chipo_one_prod = chipo_filtered[chipo_filtered.quantity==1]
chipo_one_prod
2. Com base em 1, filtre os dados cujo item_price seja maior que 10 e use nunique para visualizar o número de dados exclusivos item_name:
chipo_one_prod[chipo_one_prod['item_price']>10].item_name.nunique()
# 输出结果
# 25
A filtragem condicional em 3, 2 também pode ser usada para filtrar:
chipo.query("item_price>10")
4. Filtre os dados com várias condições e filtre os dados que satisfazem o item_name como Chicken Bowl e a quantidade como 1
chipo[(chipo['item_name']=='Chicken Bowl')&(chipo['quantity']==1)]
A declaração condicional & (e) usada em 5 e 4, aqui estão as seguintes | (ou):
Precisa atender os dados cujo item_name não é Chicken Bowl ou a quantidade é 1
chipo[(chipo['item_name']!='Chicken Bowl')|(chipo['quantity']!=1)]
4. Classifique os dados da coluna especificada
1. Classifique uma determinada coluna de dados, e o resultado final só mostrará o resultado desta coluna após a classificação. Instrução de comando: data.column name.sort_values (), por exemplo, aqui está a classificação com a coluna de item_name:
chipo.item_name.sort_values()# Sorting the values
2. Data.sort_values (por = nome da coluna) é classificado por uma determinada coluna de dados, correspondendo a outros dados da coluna, a posição precisa ser alterada e todos os dados classificados finalmente exibidos
chipo.sort_values(by = 'item_name')
Aplicação avançada em 3, 2. Por exemplo, aqui eu quero ver o nome do produto mais caro nos dados . Aqui, eu uso o método de 2 para reverter o item_price e extrair o item_name da primeira linha dos dados classificados
chipo.sort_values(by = 'item_price',ascending = False).head(1).item_name
# 打印结果
# 3598 Chips and Fresh Tomato Salsa
Name: item_name, dtype: object
** 5, método data.loc para filtrar dados **
Nota: Ao usar o método data.loc para filtrar dados, apenas nomes de linhas e nomes de colunas podem ser usados como condições de filtro
1. Filtre os dados com nomes de linha 2, 3 e nomes de coluna quantidade, item_name, item_price
chipo.loc[[2,3],['quantity','item_name','item_price']]
2. Não há restrição quanto ao nome da linha, apenas a quantidade do nome da coluna e os dados do item_name são filtrados
chipo.loc[:,['quantity','item_name']]
3. Não há restrição para nomes de coluna, apenas dados com nomes de linha 5 e 6 são filtrados
chipo.loc[[5,6],:]
4. Filtros de aplicativos abrangentes: duas colunas de dados cujo nome da linha pode ser divisível por 8 e os nomes das colunas item_price e item_name
chipo.loc[chipo.index%8==0,['item_name','item_price']]
6, método data.iloc para filtrar dados
A ideia dos métodos data.iloc e data.loc só podem ser selecionados com base em valores de índice, não nomes de coluna e nomes de linha como condições de filtro
1. Filtre os dados nas linhas 5-8 e colunas 2-3
chipo.iloc[4:8,1:3]
2. Filtre os dados nas linhas 2-4;
chipo.iloc[1:4,:]
3. Filtre as duas primeiras colunas de dados:
chipo.iloc[:,:2]
A descrição acima é todo o conteúdo deste artigo. Amigos que não estão familiarizados com a aplicação de alguns dos métodos nele, lembre-se de seguir o código e digitá-lo novamente para aprofundar seu entendimento!