Series dan DataFrame¶
Series dan DataFrame adalah dua struktur data utama dalam Pandas. Mari pelajari cara membuat dan menggunakannya.
Series¶
Series adalah array 1D dengan label (index).
Membuat Series¶
import pandas as pd
import numpy as np
# Dari list
s1 = pd.Series([10, 20, 30, 40])
print(s1)
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int64
# Dengan index custom
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s2)
# a 10
# b 20
# c 30
# dtype: int64
# Dari dictionary
s3 = pd.Series({'x': 100, 'y': 200, 'z': 300})
print(s3)
# Dari NumPy array
s4 = pd.Series(np.arange(5))
print(s4)
Akses Elemen Series¶
import pandas as pd
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
# Akses dengan label
print(s['b']) # 20
print(s[['a', 'c']]) # Multiple labels
# Akses dengan posisi
print(s.iloc[1]) # 20
print(s.iloc[0:2]) # Slicing
# Akses dengan kondisi
print(s[s > 20]) # c 30, d 40
Atribut Series¶
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'], name='nilai')
print(s.values) # [10 20 30]
print(s.index) # Index(['a', 'b', 'c'], dtype='object')
print(s.dtype) # int64
print(s.name) # nilai
print(len(s)) # 3
DataFrame¶
DataFrame adalah tabel 2D dengan label baris dan kolom.
Membuat DataFrame¶
import pandas as pd
# Dari dictionary of lists
data = {
'nama': ['Ahmad', 'Budi', 'Citra', 'Dani'],
'umur': [20, 22, 21, 23],
'jurusan': ['TI', 'SI', 'TI', 'SI'],
'ipk': [3.5, 3.8, 3.6, 3.9]
}
df = pd.DataFrame(data)
print(df)
# nama umur jurusan ipk
# 0 Ahmad 20 TI 3.5
# 1 Budi 22 SI 3.8
# 2 Citra 21 TI 3.6
# 3 Dani 23 SI 3.9
# Dengan index custom
df = pd.DataFrame(data, index=['m1', 'm2', 'm3', 'm4'])
print(df)
Dari List of Dictionaries¶
import pandas as pd
data = [
{'nama': 'Ahmad', 'nilai': 85},
{'nama': 'Budi', 'nilai': 90},
{'nama': 'Citra', 'nilai': 88}
]
df = pd.DataFrame(data)
print(df)
Dari NumPy Array¶
import pandas as pd
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df = pd.DataFrame(arr,
columns=['A', 'B', 'C'],
index=['r1', 'r2', 'r3'])
print(df)
# A B C
# r1 1 2 3
# r2 4 5 6
# r3 7 8 9
Atribut DataFrame¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi', 'Citra'],
'umur': [20, 22, 21],
'ipk': [3.5, 3.8, 3.6]
})
print(df.shape) # (3, 3)
print(df.columns) # Index(['nama', 'umur', 'ipk'], dtype='object')
print(df.index) # RangeIndex(start=0, stop=3, step=1)
print(df.dtypes)
# nama object
# umur int64
# ipk float64
# dtype: object
print(df.values) # Array 2D
print(len(df)) # 3
Melihat Data¶
import pandas as pd
df = pd.DataFrame({
'A': range(1, 101),
'B': range(101, 201),
'C': range(201, 301)
})
# Baris pertama
print(df.head()) # 5 baris pertama
print(df.head(10)) # 10 baris pertama
# Baris terakhir
print(df.tail()) # 5 baris terakhir
print(df.tail(3)) # 3 baris terakhir
# Sampel random
print(df.sample(5)) # 5 baris random
# Info dataset
print(df.info())
# Statistik deskriptif
print(df.describe())
Menambah dan Menghapus Kolom¶
Menambah Kolom¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi', 'Citra'],
'nilai_uts': [80, 85, 90],
'nilai_uas': [85, 90, 88]
})
# Menambah kolom baru
df['rata_rata'] = (df['nilai_uts'] + df['nilai_uas']) / 2
print(df)
# Dengan assign (return copy)
df_new = df.assign(lulus=df['rata_rata'] >= 80)
print(df_new)
# Menambah kolom dengan nilai konstan
df['tahun'] = 2026
Menghapus Kolom¶
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
# Hapus satu kolom
df_dropped = df.drop('C', axis=1)
print(df_dropped)
# Hapus beberapa kolom
df_dropped = df.drop(['B', 'C'], axis=1)
# In-place
df.drop('C', axis=1, inplace=True)
# Menggunakan del
del df['B']
Menambah dan Menghapus Baris¶
Menambah Baris¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi'],
'umur': [20, 22]
})
# Menambah baris dengan loc
df.loc[2] = ['Citra', 21]
print(df)
# Concatenate DataFrame
new_row = pd.DataFrame({'nama': ['Dani'], 'umur': [23]})
df = pd.concat([df, new_row], ignore_index=True)
print(df)
Menghapus Baris¶
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50]
})
# Hapus berdasarkan index
df_dropped = df.drop([0, 2]) # Hapus baris index 0 dan 2
print(df_dropped)
# Hapus berdasarkan kondisi
df = df[df['A'] > 2] # Keep hanya A > 2
print(df)
Mengubah Index¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi', 'Citra'],
'nilai': [85, 90, 88]
})
# Set kolom sebagai index
df_indexed = df.set_index('nama')
print(df_indexed)
# nilai
# nama
# Ahmad 85
# Budi 90
# Citra 88
# Reset index
df_reset = df_indexed.reset_index()
print(df_reset)
# Rename index
df.index = ['m1', 'm2', 'm3']
print(df)
Rename Kolom¶
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# Rename dengan dictionary
df_renamed = df.rename(columns={'A': 'kolom_a', 'B': 'kolom_b'})
print(df_renamed)
# Rename semua kolom
df.columns = ['x', 'y']
print(df)
# Dengan fungsi
df.columns = df.columns.str.upper()
print(df) # Kolom menjadi X, Y
Sorting¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Citra', 'Ahmad', 'Budi'],
'umur': [21, 20, 22],
'nilai': [88, 85, 90]
})
# Sort berdasarkan kolom
df_sorted = df.sort_values('nama')
print(df_sorted)
# Sort descending
df_sorted = df.sort_values('nilai', ascending=False)
print(df_sorted)
# Sort multiple kolom
df_sorted = df.sort_values(['umur', 'nilai'], ascending=[True, False])
# Sort berdasarkan index
df_sorted = df.sort_index()
Latihan¶
Buat DataFrame dari data mahasiswa (nama, nim, jurusan, semester, ipk)
Tambahkan kolom ‘status’ berdasarkan IPK (lulus jika IPK >= 3.0)
Sortir data berdasarkan jurusan dan IPK
Hapus baris dengan IPK < 2.5