-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpandas_html3.py
More file actions
66 lines (52 loc) · 2.37 KB
/
pandas_html3.py
File metadata and controls
66 lines (52 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import matplotlib.pyplot as plt
import pandas as pd
# 0. Iterating over a groupby
# 1. List comprehension. Dictionary comprehension
# Tarefas:
# 1. Quantos dias em média entre o pedido (OrderDate) e a postagem (ShipDate). Use pd.to_datetime(column).
# Faça a diferença.
# 2. Faça uma frequencia (value_counts) da coluna ShipStatus
# 3. Some o Profit por State e ordene. California lucrou mais? E o segundo?
# 4. Quais são as 4 categorias de envio (ShipMode)? Qual é o mais lucrativo?
def produz_respostas(data):
print('Questao 1')
data['tempo_handling'] = pd.to_datetime(data['ShipDate']) - pd.to_datetime(data['OrderDate'])
print(f"Média entre pedido e entrega postada: {data['tempo_handling'].mean()}")
print('')
print('Questao 2')
print(f"Frequência Ship Status: \n{data['ShipStatus'].value_counts().apply(lambda value: f'{value:,}')}")
print('')
print('Questao 3')
res = data.groupby('State').agg('sum')['Profit'].sort_values(ascending=False).head()
print(res.apply(lambda value: f"{value:,}"))
print('')
print('Questao 4')
q4 = data.groupby('ShipMode').agg(['sum', 'count'])['Profit']
print('Categorias de envio: ')
print([i for i in q4.index])
q4['ModeProfit'] = q4['sum'] / q4['count']
print('Lucro máximo: ')
print(q4[q4['ModeProfit'] == q4['ModeProfit'].max()])
def exemplo_iterate_over_group(data, by='ShipMode'):
print(f'Num. linhas originais: {len(data)}')
for name, grupo in data.groupby(by):
print(f'\nNome do grupo: {name}, a partir da coluna: {by}\n'
f'tipo objeto {type(grupo)}, '
f'tamanho grupo: {len(grupo)}')
# Alternativa para imprimir nome e grupo usando lista comprehension -->
# gr = [g for n, g in d2.groupby('ShipMode')]
def direto_csv_net(address):
return pd.read_csv(f'{address}?raw=True')
if __name__ == '__main__':
p2 = r'https://github.com/metatron-app/metatron-doc-discovery/blob/master/_static/data/sales-data-sample.csv'
d2 = direto_csv_net(p2)
exemplo_iterate_over_group(d2)
# produz_respostas(d2)
# Plot rápido
# d2.plot('longitude', 'latitude', kind='scatter')
# plt.show()
# d3 = d2.groupby('ShipMode').agg(['sum', 'count'])['Profit']
# Outro exemplo de iteração com DOIS resultados para cada loop
b = ['a', 'b', 'c', 'd']
for i, j in enumerate(b):
print(f'o i é {i}, e o j é {j}')