SQL Sorgularının Python Pandas Dataframe Karşılıkları-3 (UPDATE, DELETE)
Merhaba serimizin üçüncü yazısında SQL update ve delete operasyonlarını pandas ile nasıl yaparız onu göreceğiz. Veri kaynaklarına ilk yazımızdan ulaşabilirsiniz.
1. UPDATE
Verimizde bazı satırlarda meslek bilgisi boştu gelin onu güncelleyerek dolduralım. SQL UPDATE operasyonu tehlikeli bir iştir. Şayet filtreyi iyi ayarlamaz iseniz istenmeyen yerleri istenmeyen bilgilerle değiştirirsiniz. O yüzden ben UPDATE sorgusunda kullanacağım filtreyi önce SELECT ile deniyorum ve sonra UPDATE kullanıyorum.
select * from simple_data where meslek = ''
sirano | isim | yas | meslek | sehir | aylik_gelir |
---|---|---|---|---|---|
5 | Yasemin | 23 | Bursa | 4800 | |
15 | Şehmuz | 41 | Ankara | 8700 |
Gördüğümüz gibi kullandığımız filtre (WHERE cümleciği) doğru çalıştı. Artık UPDATE yapabiliriz.
update simple_data set meslek = 'Saraç' where meslek = ''
Güncellemeyi kontrol için tekrar SELECT sorgusunu çalıştıralım
select * from simple_data where meslek = 'Saraç'
sirano | isim | yas | meslek | sehir | aylik_gelir |
---|---|---|---|---|---|
5 | Yasemin | 23 | Saraç | Bursa | 4800 |
15 | Şehmuz | 41 | Saraç | Ankara | 8700 |
Pandas ile de önce select ile filtreyi kontrol edelim.
df.loc[df['meslek'].isna()].head()
sirano | isim | yas | meslek | sehir | aylik_gelir | |
---|---|---|---|---|---|---|
4 | 5 | Yasemin | 23 | NaN | Bursa | 4800 |
14 | 15 | Şehmuz | 41 | NaN | Ankara | 8700 |
Şimdi güncelleyelim
df.loc[df['meslek'].isna(), 'meslek'] = 'Saraç'
Güncellemeyi kontroledelim
df.loc[df['meslek'] == 'Saraç'].head()
sirano | isim | yas | meslek | sehir | aylik_gelir | |
---|---|---|---|---|---|---|
4 | 5 | Yasemin | 23 | Saraç | Bursa | 4800 |
14 | 15 | Şehmuz | 41 | Saraç | Ankara | 8700 |
Güncelleme başarılı.
2. DELETE
Delete operasyonuna örnek olarak ismi Gençay olanları silelim.
delete from simple_data where isim = 'Gençay'
Kontrol edelim
select * from simple_data where isim = 'Gençay' limit 5
sirano | isim | yas | meslek | sehir | aylik_gelir |
---|
Silme işlemi başarılı.
Silmeden önce Pandas ile de kontrol edelim filtre doğru çalışıyor mu?
df.loc[df['isim'] == 'Gençay'].head()
sirano | isim | yas | meslek | sehir | aylik_gelir | |
---|---|---|---|---|---|---|
15 | 16 | Gençay | 46 | Berber | Ankara | 8800 |
16 | 16 | Gençay | 46 | Berber | Ankara | 8800 |
Şimdi silelim
df = df.loc[df['isim'] != 'Gençay']
Kontrol edelim
df.loc[df['isim'] == 'Gençay'].head()
sirano | isim | yas | meslek | sehir | aylik_gelir |
---|
Silme işlemi başarılı. Burada bir nokta dikkatinizi çekmiştir. Aslında silme yapmadık. Sadece isim sütununda “Gençay” geçenleri filtreleyip kalanları dataframe’in kendisine tekrar atadık.