20  Pandas - sortowanie

import pandas as pd

# Przykładowa ramka danych
data = pd.DataFrame({
    'Name': ['Alice', 'Tom', 'Charlie'],
    'Age': [25, 42, 35],
    'Salary': [50000, 60000, 70000]
})

# Sortowanie po kolumnie 'Age'
s1 = data.sort_values(by='Age')
print(s1)
# Sortowanie w odworotnej kolejności
s2 = data.sort_values(by='Salary', ascending=False)
print(s2)
# Sortowanie według 'Age' rosnąco, a następnie 'Salary' malejąco
s3 = data.sort_values(by=['Age', 'Salary'], ascending=[True, False])
print(s3)
      Name  Age  Salary
0    Alice   25   50000
2  Charlie   35   70000
1      Tom   42   60000
      Name  Age  Salary
2  Charlie   35   70000
1      Tom   42   60000
0    Alice   25   50000
      Name  Age  Salary
0    Alice   25   50000
2  Charlie   35   70000
1      Tom   42   60000
import pandas as pd

# Przykładowa ramka danych
data = pd.DataFrame({
    'Name': ['Alice', 'Tom', 'Charlie'],
    'Age': [25, 41, 35],
    'Salary': [50000, 60000, 70000]
})

# Sortowanie inplace (zamiana istniejącej zmiennej) - obecnie niezalecane
data.sort_values(by='Age', inplace=True)
print(data)
      Name  Age  Salary
0    Alice   25   50000
2  Charlie   35   70000
1      Tom   41   60000
import pandas as pd

df2 = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'Dave'],
    'Age': [25, 30, None, 35],
    'Salary': [50000, None, 70000, 60000]
})

# Sortowanie z NaN na końcu
s2 = df2.sort_values(by='Age', na_position='last')
print(s2)
# Sortowanie z NaN na początku
s3 = df2.sort_values(by='Age', na_position='first')
print(s3)
      Name   Age   Salary
0    Alice  25.0  50000.0
1      Bob  30.0      NaN
3     Dave  35.0  60000.0
2  Charlie   NaN  70000.0
      Name   Age   Salary
2  Charlie   NaN  70000.0
0    Alice  25.0  50000.0
1      Bob  30.0      NaN
3     Dave  35.0  60000.0
import pandas as pd

df3 = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'Dave'],
    'Age': [25, 30, None, 35],
    'Salary': [50000, None, 70000, 60000]
})

s3 = df3.sort_values(by='Name', key=lambda x: x.str.len())
print(s3)
      Name   Age   Salary
1      Bob  30.0      NaN
3     Dave  35.0  60000.0
0    Alice  25.0  50000.0
2  Charlie   NaN  70000.0

Ćwiczenie: (exsort.py)

Załaduj poniższe pliki i posortuj wg wybranych samodzielnie kryteriów: