Obiective
În această lecție, veți învăța:
- Să efectuați operații avansate cu matrice NumPy
- Să manipulați și să analizați date într-un mod avansat folosind pandas
- Să creați vizualizări complexe ale datelor cu matplotlib
- Să combinați NumPy, pandas și matplotlib pentru a rezolva probleme reale de analiză a datelor
1. Operații avansate cu matrice NumPy
1.1. Indexare avansată și slicing
Pentru a accesa elemente specifice dintr-o matrice NumPy, puteți utiliza indexarea avansată și slicing:
import numpy as np
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Selectarea elementelor diagonale
diagonal_elements = array[np.arange(3), np.arange(3)]
print(diagonal_elements) # Output: array([1, 5, 9])
# Actualizarea elementelor diagonale
array[np.arange(3), np.arange(3)] = 0
print(array)
1.2. Funcții universale (ufunc)
Funcțiile universale sunt funcții care operează pe matrici element cu element. De exemplu, funcția np.sin() calculează sinusul fiecărui element dintr-o matrice NumPy:
array = np.array([0, np.pi / 2, np.pi])
sin_array = np.sin(array)
print(sin_array)
1.3. Funcții de reducere
Funcțiile de reducere sunt funcții care transformă o matrice într-un singur valoare sau într-o matrice de dimensiuni reduse. De exemplu, funcția np.sum() calculează suma elementelor unei matrice:
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
sum_total = np.sum(array)
print(sum_total) # Output: 45
# Suma pe fiecare coloană
sum_columns = np.sum(array, axis=0)
print(sum_columns) # Output: array([12, 15, 18])
2. Manipularea și analiza avansată a datelor cu pandas
2.1. Operații de grupare și agregare
Pentru a efectua operații de grupare și agregare pe date, utilizați metoda groupby() a obiectelor DataFrame:
import pandas as pd
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
'Value': [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(data)
grouped = df.groupby('Category')
# Agregarea valorilor prin calcularea mediei
mean_values = grouped.mean()
print(mean_values)
2.2. Unirea și combinarea DataFrames
Pentru a uni sau a combina DataFrames, utilizați funcțiile pd.concat(), pd.merge() și pd.join():
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
'C': ['C3', 'C4', 'C5'],
'D': ['D3', 'D4', 'D5']},
index=[3, 4, 5])
# Concatenarea DataFrames
result = pd.concat([df1, df2])
print(result)
# Unirea DataFrames pe baza unei coloane comune
merged = pd.merge(df1, df2, on='A', how='inner')
print(merged)
3. Crearea de vizualizări complexe ale datelor cu matplotlib
3.1. Subploturi
Pentru a crea mai multe grafice într-o singură figură, utilizați funcția plt.subplots():
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig, axes = plt.subplots(2, 2)
axes[0, 0].plot(x, np.sin(x))
axes[0, 1].plot(x, np.cos(x))
axes[1, 0].plot(x, np.tan(x))
axes[1, 1].plot(x, np.arctan(x))
plt.show()
3.2. Grafice cu bare
Pentru a crea un grafic cu bare, folosiți funcția ax.bar():
fig, ax = plt.subplots()
x = np.arange(3)
values = [3, 5, 8]
ax.bar(x, values)
ax.set_xticks(x)
ax.set_xticklabels(['A', 'B', 'C'])
plt.show()
3.3. Grafice de tip heatmap
Pentru a crea grafice de tip heatmap, utilizați funcția ax.imshow():
heatmap_data = np.random.rand(10, 10)
fig, ax = plt.subplots()
cax = ax.imshow(heatmap_data, cmap='hot', interpolation='nearest')
fig.colorbar(cax)
plt.show()
4. Combinarea NumPy, pandas și matplotlib pentru analiza datelor
Să combinăm cunoștințele dobândite pentru a rezolva o problemă reală de analiză a datelor. Vom analiza și vizualiza vânzările unui magazin.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Încărcarea datelor
data = pd.read_csv('sales_data.csv')
# Calcularea vânzărilor totale pe categorii
sales_by_category = data.groupby('Category').sum()
# Crearea unui grafic cu bare pentru vânzările totale pe categorii
fig, ax = plt.subplots()
x = np.arange(len(sales_by_category))
values = sales_by_category['Total Sales']
ax.bar(x, values)
ax.set_xticks(x)
ax.set_xticklabels(sales_by_category.index)
plt.show()
În acest exemplu, am folosit pandas pentru a încărca și a prelucra datele, NumPy pentru a efectua operații matematice, iar matplotlib pentru a vizualiza rezultatele. Acesta este un exemplu tipic de utilizare a celor trei biblioteci pentru analiza de date.