Conținut curs
Python Avansat
Despre lecție

Obiective

În această lecție, veți învăța:

  1. Să efectuați operații avansate cu matrice NumPy
  2. Să manipulați și să analizați date într-un mod avansat folosind pandas
  3. Să creați vizualizări complexe ale datelor cu matplotlib
  4. 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:

python
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:

python
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:

python
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:

python
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():

python
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():

python
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():

python
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():

python
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.

python
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.