-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path7daysofcode_python_pandas.py
170 lines (123 loc) · 9.11 KB
/
7daysofcode_python_pandas.py
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# -*- coding: utf-8 -*-
"""7daysofcode_python_pandas.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1ceuzi8w1uqvYISyHiO7-VrJ6FQZ4Jwz6
On day 1 of the challenge, I started by importing all the data. As the library loan data was in different files, I first unified all of them into the "Loan Data" dataframe. Then, I merged this with the Apache file. Finally, I performed a data cleaning of duplicate values.
En el primer día del desafío, comencé importando todos los datos. Como los datos de préstamo de la biblioteca estaban en diferentes archivos, primero los unifiqué en el marco de datos: "Datos de préstamo". Luego, unifiqué esto con el archivo Apache. Finalmente, realicé una limpieza de los datos duplicados.
"""
import pandas as pd
data2010_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20101.csv?raw=true')
data2010_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20102.csv?raw=true')
data2011_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20111.csv?raw=true')
data2011_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20112.csv?raw=true')
data2012_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20121.csv?raw=true')
data2012_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20122.csv?raw=true')
data2013_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20131.csv?raw=true')
data2013_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20132.csv?raw=true')
data2014_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20141.csv?raw=true')
data2014_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20142.csv?raw=true')
data2015_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20151.csv?raw=true')
data2015_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20152.csv?raw=true')
data2016_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20161.csv?raw=true')
data2016_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20162.csv?raw=true')
data2017_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20171.csv?raw=true')
data2017_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20172.csv?raw=true')
data2018_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20181.csv?raw=true')
data2018_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20182.csv?raw=true')
data2019_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20191.csv?raw=true')
data2019_2 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20192.csv?raw=true')
data2020_1 = pd.read_csv('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/blob/main/Dia_1-Importando_dados/Datasets/dados_emprestimos/emprestimos-20201.csv?raw=true')
df_loan_library = pd.concat([data2010_1, data2010_2, data2011_1, data2011_2, data2012_1, data2012_2, data2013_1, data2013_2, data2014_1, data2014_2, data2015_1, data2015_2, data2016_1,
data2016_2, data2017_1, data2017_2, data2018_1, data2018_2, data2019_1, data2019_2, data2020_1])
df_loan_library.value_counts()
df_loan_library.drop_duplicates()
df_loan_library.value_counts()
data_books = pd.read_parquet('https://github.com/FranciscoFoz/7_Days_of_Code_Alura-Python-Pandas/raw/main/Dia_1-Importando_dados/Datasets/dados_exemplares.parquet')
data_books
df_data_books = pd.DataFrame(data_books)
df_loan_library = pd.DataFrame(df_loan_library)
df_final = df_loan_library.merge(df_data_books)
df_final
"""On day 2 i performed a data wrangling. I also decided to do something beyond what was requested in the challenge and created an extra column that informs the book category according to the CDU.
En el dia 2 seguí con la limpieza de los datos. También decidí hacer algo más de lo que se solicitó en el desafío y creé una columna adicional que informa la categoría del libro según la CDU.
"""
CDU_lista = []
for CDU in df_final['localizacao']:
if(CDU < 100):
CDU_lista.append('Generalidades')
elif(CDU < 200):
CDU_lista.append('Filosofia e psicologia')
elif(CDU < 300):
CDU_lista.append('Religião')
elif(CDU < 400):
CDU_lista.append('Ciências sociais')
elif(CDU < 500):
CDU_lista.append('Classe vaga')
elif(CDU < 600):
CDU_lista.append('Matemática e ciências naturais')
elif(CDU < 700):
CDU_lista.append('Ciências aplicadas')
elif(CDU < 800):
CDU_lista.append('Belas artes')
elif(CDU < 900):
CDU_lista.append('Linguagem')
else:
CDU_lista.append('Geografia. Biografia. História.')
CDU_lista
df_final['CDU_lista'] = CDU
df_final.head()
df_final = df_final.drop(columns=['registro_sistema'])
df_final.head()
df_final['matricula_ou_siape'] = df_final['matricula_ou_siape'].astype(str)
df_final.head()
classificar_cdu = lambda x: ('Generalidades. Ciência e conhecimento.' if x < 100 else
'Filosofia e psicologia.' if x < 200 else
'Religião.' if x < 300 else
'Ciências sociais.' if x < 400 else
'Classe vaga. Provisoriamente não ocupada.' if x < 500 else
'Matemática e ciências naturais.' if x < 600 else
'Ciências aplicadas.' if x < 700 else
'Belas artes.' if x < 800 else
'Linguagem. Língua. Linguística.' if x < 900 else
'Geografia. Biografia. História.')
df_final['Categoria'] = df_final['localizacao'].astype(int).apply(classificar_cdu)
df_final.head()
"""On day 3 i started to extract data from the dataframe according to what was asked in the challenge"""
import pandas as pd
import matplotlib.pyplot as plt
df_final['data_emprestimo'] = pd.to_datetime(df_final['data_emprestimo'])
prestamos_por_ano = df_final.groupby(df_final['data_emprestimo'].dt.year)['data_emprestimo'].count()
print(prestamos_por_ano)
plt.plot(prestamos_por_ano.index, prestamos_por_ano.values)
plt.xlabel('Ano')
plt.ylabel('Quantidade de exemplares emprestados')
plt.show()
emprestimos_por_mes = df_final.groupby([df_final['data_emprestimo'].dt.month])['data_emprestimo'].count()
print(emprestimos_por_mes)
plt.plot(emprestimos_por_mes.index, emprestimos_por_mes.values)
plt.xlabel('Mês')
plt.ylabel
emprestimos_por_hora = df_final.groupby(df_final['data_emprestimo'].dt.hour)['data_emprestimo'].count()
plt.plot(emprestimos_por_hora.index, emprestimos_por_hora.values)
plt.xlabel('Hora')
plt.ylabel('Número de empréstimos')
plt.title('Evolución de empréstimos por hora')
plt.show()
"""On day 4 I created a python function to generate a table according the variables that i indicated
"""
df_final.head()
df_final['data_emprestimo'] = pd.to_datetime(df_final['data_emprestimo'])
df_final.tipo_vinculo_usuario.unique()
df_final.colecao.unique()
df_final.biblioteca.unique()
df_final.Categoria.unique()
def tabla_frecuencia(variable):
freq_table = df_final[variable].value_counts().reset_index()
freq_table.columns = [variable, 'quantidade']
freq_table['percentual'] = round(freq_table['quantidade'] / freq_table['quantidade'].sum() * 100, 1)
return freq_table
tabla_frecuencia('tipo_vinculo_usuario')
tabla_frecuencia('colecao')
tabla_frecuencia('biblioteca')
tabla_frecuencia('Categoria')