Pandasλ‘ μλ³, μ νλ³ λ§€μΆ λΆμνκΈ°
μ¬λ¬ μ νμ μλ³ ν맀λ, κ°λ¨κ°, λ§€μΆ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² λΆμνλ €λ©΄ μ΄λ»κ² ν΄μΌ ν κΉμ?
λ°μ΄ν°λ₯Ό λΆμνλ€ λ³΄λ©΄ μλ³ λ° μ νλ³λ‘ λ€μν νλͺ©μ λν ν΅κ³λ₯Ό κ³μ°ν΄μΌ ν λκ° μμ΅λλ€.
Pandas
λ₯Ό μ¬μ©νλ©΄ μ΄λ¬ν 볡μ‘ν μμ
λ μλνν μ μμ΅λλ€.
μ΄λ²μλ μλ³
, μ νλ³
λ‘ κ°λ¨κ°, ν맀λ, λ§€μΆ λ°μ΄ν°λ₯Ό λΆμνλ λ°©λ²μ μ΄ν΄λ³΄κ² μ΅λλ€.
μλ³, μ νλ³ λ°μ΄ν° λΆμμ΄ νμν λ
μλ₯Ό λ€μ΄, μλμ κ°μ΄ 1μλΆν° 3μκΉμ§ A, B μ νμ λν κ°λ¨κ°μ ν맀λ λ°μ΄ν°κ° μλ€κ³ κ°μ ν΄λ³΄κ² μ΅λλ€.
import pandas as pd # μμ λ°μ΄ν° μμ± data = { 'μ': ['2023-01', '2023-01', '2023-02', '2023-02', '2023-03', '2023-03'], 'μ ν': ['A', 'B', 'A', 'B', 'A', 'B'], 'κ°λ¨κ°': [20, 30, 22, 28, 21, 29], 'ν맀λ': [100, 150, 120, 130, 110, 140], } df = pd.DataFrame(data) # λ§€μΆ κ³μ° df['맀μΆ'] = df['κ°λ¨κ°'] * df['ν맀λ'] print(df)
μ μ½λλ₯Ό μ€ννλ©΄ λ€μκ³Ό κ°μ λ°μ΄ν°νλ μμ΄ μμ±λ©λλ€.
μ μ ν κ°λ¨κ° ν맀λ λ§€μΆ 0 2023-01 A 20 100 2000 1 2023-01 B 30 150 4500 2 2023-02 A 22 120 2640 3 2023-02 B 28 130 3640 4 2023-03 A 21 110 2310 5 2023-03 B 29 140 4060
μ΄μ μ΄ λ°μ΄ν°νλ μμ λ°νμΌλ‘ μ νλ³, μλ³λ‘ μμ½λ λ°μ΄ν°λ₯Ό ꡬμ±ν΄ λ³΄κ² μ΅λλ€.
μ νλ³/μλ³ λ°μ΄ν° μμ½νκΈ°
λ¨Όμ μ νλ³λ‘ μ΄ ν맀λκ³Ό 맀μΆμ μμ½ν΄ λ³΄κ² μ΅λλ€.
κ·Έλ£Ήνλ λ°μ΄ν°λ₯Ό μμ½νλ €λ©΄ groupby
ν¨μλ₯Ό μ¬μ©νμ¬ μλ³λ‘ λ°μ΄ν°λ₯Ό κ·Έλ£Ήννκ³ , agg
ν¨μλ₯Ό μ¬μ©νμ¬ κ° κ·Έλ£Ήμ λν μμ½ ν΅κ³λ₯Ό κ³μ°ν μ μμ΅λλ€.
'agg' ν¨μλ λ°μ΄ν°νλ μμ λ°μ΄ν°λ₯Ό μ§κ³(aggregate)ν λ μ¬μ©νλ ν¨μλ‘, agg('mean')
μ κ° κ·Έλ£Ήμ νκ· κ°μ κ³μ°νκ³ , agg('sum')
μ κ° κ·Έλ£Ήμ ν©κ³λ₯Ό κ³μ°ν©λλ€.
μ νλ³ μ΄ λ§€μΆ κ³μ°
μ νλ³ μ΄ λ§€μΆμ df.groupby('μ ν')
κ³Ό κ°μ΄ μ ν
μΌλ‘ κ·Έλ£Ήνν΄ κ³μ°ν μ μμ΅λλ€.
import pandas as pd data = { 'μ': ['2023-01', '2023-01', '2023-02', '2023-02', '2023-03', '2023-03'], 'μ ν': ['A', 'B', 'A', 'B', 'A', 'B'], 'κ°λ¨κ°': [20, 30, 22, 28, 21, 29], 'ν맀λ': [100, 150, 120, 130, 110, 140], } df = pd.DataFrame(data) # λ§€μΆ κ³μ° df['맀μΆ'] = df['κ°λ¨κ°'] * df['ν맀λ'] # μ νλ³ μ΄ λ§€μΆ λ° ν맀λ μμ½ result = df.groupby('μ ν').agg({'ν맀λ': 'sum', '맀μΆ': 'sum'}) print(result)
μ΄ μ½λλ₯Ό μ€ννλ©΄ λ€μκ³Ό κ°μ μμ½ λ°μ΄ν°κ° μΆλ ₯λ©λλ€.
ν맀λ λ§€μΆ μ ν A 330 6950 B 420 12200
μλ³ μ΄ λ§€μΆ κ³μ°
μλ³ μ΄ λ§€μΆμ df.groupby('μ')
κ³Ό κ°μ΄ μ
λ‘ κ·Έλ£Ήνν΄ κ³μ°ν μ μμ΅λλ€.
...(μλ΅)... # μλ³ μ΄ λ§€μΆ λ° ν맀λ μμ½ result = df.groupby('μ').agg({'ν맀λ': 'sum', '맀μΆ': 'sum'})
μ΄ μ½λλ₯Ό μ€ννλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όκ° μΆλ ₯λ©λλ€.
ν맀λ λ§€μΆ μ 2023-01 250 6500 2023-02 250 6280 2023-03 250 6370
νΌλ² ν μ΄λΈλ‘ λ°μ΄ν° μ¬κ΅¬μ±νκΈ°
λ λμκ°, λ°μ΄ν°λ₯Ό νΌλ² ν μ΄λΈλ‘ μ¬κ΅¬μ±νμ¬ νΉμ νλͺ©μ κΈ°μ€μΌλ‘ λ°μ΄ν°λ₯Ό λΉκ΅ν μλ μμ΅λλ€. μ¬κΈ°μλ κ° μλ³λ‘ μ νλ³ λ§€μΆμ λΉκ΅ν΄λ³΄κ² μ΅λλ€.
# μλ³, μ νλ³ λ§€μΆ νΌλ² ν μ΄λΈ νΌλ²_맀μΆ_ν μ΄λΈ = df.pivot_table(values='맀μΆ', index='μ', columns='μ ν', aggfunc='sum', fill_value=0) print(νΌλ²_맀μΆ_ν μ΄λΈ)
κ²°κ³Όλ λ€μκ³Ό κ°μ΄ μΆλ ₯λ©λλ€:
μ ν A B μ 2023-01 2000 4500 2023-02 2640 3640 2023-03 2310 4060
μ΄λ κ² νλ©΄ κ° μλ³λ‘ μ ν Aμ Bμ 맀μΆμ νλμ λΉκ΅ν μ μμ΅λλ€.
Pandasμμ agg ν¨μλ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°λ₯Ό κ·Έλ£Ήνν μ μλ€.
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result