Dalam tutorial sebelumnya, kita telah membahas dasar-dasar Python for loop, melihat bagaimana melakukan iterasi melalui daftar dan daftar daftar. Tapi ada lebih banyak untuk loop daripada mengulang daftar, dan dalam pekerjaan sains data dunia nyata, Anda mungkin ingin menggunakan for loop dengan struktur data lain, termasuk array numpy dan panda DataFrames
Tutorial ini dimulai dengan cara menggunakan for loop untuk melakukan iterasi melalui struktur data Python umum selain daftar (seperti tupel dan kamus). Kemudian kita akan mempelajari penggunaan for loop bersamaan dengan pustaka ilmu data Python umum seperti stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 1, stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 2, dan stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 3. Kami juga akan melihat lebih dekat pada fungsi stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 4 dan bagaimana itu berguna saat menulis untuk loop
Tinjauan Cepat. Python Untuk Loop
A for loop adalah pernyataan pemrograman yang memberi tahu Python untuk mengulang kumpulan objek, melakukan operasi yang sama pada setiap objek secara berurutan. Sintaks dasarnya adalah
for object in collection_of_objects: # code you want to execute on each object _Setiap kali Python melakukan iterasi melalui loop, variabel stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 5 mengambil nilai dari objek berikutnya dalam urutan kita stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 6, dan Python akan mengeksekusi kode yang telah kita tulis pada setiap objek dari stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 6 secara berurutan
Sekarang, mari selami cara menggunakan for loop dengan berbagai jenis struktur data. Kami akan melewatkan daftar karena telah dibahas dalam tutorial sebelumnya;
Struktur data
Tupel
Tuple adalah urutan, seperti daftar. Perbedaan antara tupel dan daftar adalah bahwa tupel tidak dapat diubah; . Tuples juga menggunakan tanda kurung, bukan tanda kurung siku
Terlepas dari perbedaan ini, perulangan tupel sangat mirip dengan daftar
x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50Jika kita memiliki daftar tupel, kita dapat mengakses elemen individual di setiap tupel dalam daftar kita dengan memasukkan keduanya sebagai variabel dalam perulangan for, seperti itu
x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 1 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11Kamus
Selain daftar dan tupel, kamus adalah tipe data Python umum lainnya yang mungkin Anda temui saat bekerja dengan data, dan for loop juga dapat beralih melalui kamus.
Kamus Python terdiri dari pasangan kunci-nilai, jadi di setiap loop, ada dua elemen yang perlu kita akses (kunci dan nilainya). Alih-alih menggunakan stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 8 seperti yang kita lakukan dengan daftar, untuk mengulang kedua kunci dan nilai yang sesuai untuk setiap pasangan nilai kunci, kita perlu memanggil metode stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 9
Misalnya, bayangkan kita memiliki kamus bernama AAPL : 187.31 MSFT : 124.06 FB : 183.5 0 yang berisi ticker saham dan harga saham yang sesuai. Kami akan menggunakan metode stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) _9 pada kamus kami untuk menghasilkan kunci dan nilai untuk setiap iterasi
stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) AAPL : 187.31 MSFT : 124.06 FB : 183.5Perhatikan bahwa kunci nama dan nilai sepenuhnya arbitrer;
String
Seperti yang disebutkan dalam tutorial pengantar, for loop juga dapat mengulang melalui setiap karakter dalam sebuah string. Sebagai ulasan singkat, berikut cara kerjanya
print("data science") for c in "data science": print(c) data science d a t a s c i e n c eArray Numpy
Sekarang, mari kita lihat bagaimana for loop dapat digunakan dengan paket ilmu data Python umum dan tipe datanya
Kita akan mulai dengan melihat bagaimana menggunakan for loop dengan stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 1 array, jadi mari kita mulai dengan membuat beberapa array angka acak
import numpy as np np.random.seed(0) # seed for reproducibility x = np.random.randint(10, size=6) y = np.random.randint(10, size=6)Iterasi pada array numpy satu dimensi sangat mirip dengan iterasi pada daftar
x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 0x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 1Sekarang, bagaimana jika kita ingin melakukan iterasi melalui array dua dimensi?
x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 2x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 3Array dua dimensi dibangun dari sepasang array satu dimensi. Untuk mengunjungi setiap elemen daripada setiap larik, kita dapat menggunakan fungsi numpy AAPL : 187.31 MSFT : 124.06 FB : 183.5 3, objek iterator multi-dimensi yang menggunakan larik sebagai argumennya
Pada kode di bawah ini, kita akan menulis perulangan for yang mengulang setiap elemen dengan meneruskan AAPL : 187.31 MSFT : 124.06 FB : 183.5 4, larik dua dimensi kita, sebagai argumen untuk AAPL : 187.31 MSFT : 124.06 FB : 183.5 3
x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 4x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 5Seperti yang bisa kita lihat, ini pertama-tama mencantumkan semua elemen di x, lalu semua elemen y
Ingat. Saat mengulang melalui struktur data yang berbeda ini, kamus memerlukan metode, array numpy memerlukan fungsi
Bingkai Data Panda
Saat kami bekerja dengan data di Python, kami sering menggunakan stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 2 DataFrames. Dan untungnya, kita bisa menggunakan for loop untuk mengulanginya juga
Mari berlatih melakukan ini sambil bekerja dengan file CSV kecil yang mencatat PDB, ibu kota, dan populasi untuk enam negara berbeda. Kami akan membaca ini menjadi DataFrame panda di bawah ini
Panda bekerja sedikit berbeda dari numpy, jadi kami tidak akan dapat mengulangi proses numpy yang telah kami pelajari. Jika kami mencoba untuk mengulangi panda DataFrame seperti yang kami lakukan pada array numpy, ini hanya akan mencetak nama kolom
x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 6x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 7Sebagai gantinya, kita perlu menyebutkan secara eksplisit bahwa kita ingin mengulangi baris DataFrame. Kami melakukan ini dengan memanggil metode AAPL : 187.31 MSFT : 124.06 FB : 183.5 _7 pada DataFrame, dan mencetak label baris dan data baris, di mana satu baris adalah seluruh seri panda
x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 8x = (10,20,30,40,50) for var in x: print("index "+ str(x.index(var)) + ":",var) 9Kami juga dapat mengakses nilai spesifik dari seri panda. Misalkan kita hanya ingin mencetak ibukota masing-masing negara. Kita dapat menentukan bahwa kita hanya menginginkan keluaran dari kolom "Modal" seperti itu
index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 0index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 1Untuk melangkah lebih jauh dari sekadar cetakan sederhana, mari tambahkan kolom menggunakan loop for. Mari tambahkan kolom PDB per kapita. Ingatlah bahwa AAPL : 187.31 MSFT : 124.06 FB : 183.5 _8 berbasis label. Pada kode di bawah ini, kami akan menambahkan kolom dan menghitung isinya untuk setiap negara dengan membagi total PDB dari populasinya dan mengalikan hasilnya dengan satu triliun (karena angka PDB tercantum dalam triliunan)
index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 2index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 3Untuk setiap baris dalam kerangka data kami, kami membuat label baru, dan menyetel data baris sama dengan total PDB dibagi dengan populasi negara, dan dikalikan dengan $1T untuk ribuan dolar
Fungsi stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 4
Kita telah melihat bagaimana kita dapat menggunakan for loop untuk melakukan iterasi pada urutan atau struktur data apa pun. Tetapi bagaimana jika kita ingin mengulangi urutan ini dalam urutan tertentu, atau untuk beberapa kali tertentu?
Ini dapat dicapai dengan fungsi stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 4 bawaan Python. Bergantung pada berapa banyak argumen yang Anda berikan ke fungsi, Anda dapat memutuskan di mana rangkaian angka tersebut akan dimulai dan diakhiri serta seberapa besar perbedaan antara satu angka dan angka berikutnya. Perhatikan bahwa, mirip dengan daftar, hitungan fungsi stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 4 dimulai dari 0 dan bukan dari 1
Ada tiga cara untuk memanggil stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 4
- rentang (berhenti)
- rentang (mulai, berhenti)
- rentang (mulai, berhenti, langkah)
print("data science") for c in "data science": print(c) _3
range(stop) mengambil satu argumen, digunakan ketika kita ingin mengulangi serangkaian angka yang dimulai dari 0 dan menyertakan setiap angka hingga, tetapi tidak termasuk, angka yang kita atur sebagai stop
index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 4index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 5print("data science") for c in "data science": print(c) _4
range(start, stop) membutuhkan dua argumen, di mana kita tidak hanya dapat mengatur akhir seri tetapi juga awal. Anda dapat menggunakan range() untuk menghasilkan serangkaian angka dari A ke B menggunakan range(A, B)
index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 6index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 7print("data science") for c in "data science": print(c) _5
range(start, stop, step) membutuhkan tiga argumen. Selain nilai minimum dan maksimum, kita dapat mengatur selisih antara satu angka dalam urutan dan angka berikutnya. Nilai langkah default adalah 1 jika tidak ada yang diberikan
index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 8index 0: 10 index 1: 20 index 2: 30 index 3: 40 index 4: 50 9Perhatikan bahwa ini berfungsi sama untuk urutan non-numerik
Kita juga dapat menggunakan indeks elemen secara berurutan untuk melakukan iterasi. Ide kuncinya adalah pertama-tama menghitung panjang daftar dan kemudian mengulangi urutan dalam rentang panjang ini. Mari kita lihat sebuah contoh
x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 0x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 1Dalam perulangan for kami di atas, kami melihat indeks dan bahasa variabel, kata kunci in, dan fungsi stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 4 untuk membuat urutan angka. Perhatikan bahwa kami juga menggunakan fungsi print("data science") for c in "data science": print(c) _7 dalam kasus ini, karena daftarnya bukan numerik
Untuk setiap iterasi, kami mengeksekusi pernyataan cetak kami. Jadi untuk setiap indeks dalam rentang len(languages), kami ingin mencetak sebuah bahasa. Karena panjang urutan bahasa kita adalah 6 (yaitu nilai yang dievaluasi oleh print("data science") for c in "data science": print(c) 8), kita dapat menulis ulang pernyataan sebagai berikut
x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 2x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 1Merencanakan dengan For Loops
Misalkan kita ingin mengulangi koleksi, dan menggunakan setiap elemen untuk menghasilkan subplot, atau bahkan untuk setiap pelacakan dalam satu plot. Sebagai contoh, mari ambil kumpulan data iris yang populer (pelajari lebih lanjut tentang data ini) dan lakukan beberapa plotting dengan for loop. Perhatikan grafik di bawah ini
(Jika Anda tidak terbiasa dengan Matplotlib atau Seaborn, lihat panduan pemula untuk Kyso ini. Matplotlib, Seaborn. Dataquest juga menawarkan kursus interaktif tentang visualisasi data Python)
Di atas, kami telah memplot setiap panjang sepal vs lebar sepal, tetapi kami dapat memberikan grafik lebih banyak makna dengan mewarnai setiap titik data dengan kelas spesies masing-masing bunga. Salah satu cara untuk melakukannya adalah dengan menyebarkan setiap titik dengan sendirinya menggunakan perulangan for dan meneruskan warna masing-masing
x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 7x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) 6Bagaimana jika kita ingin memvisualisasikan distribusi univariat dari fitur tertentu dari kumpulan data iris kita?
x = [(1,2), (3,4), (5,6)] for a, b in x: print(a, "plus", b, "equals", a+b) _9Tanpa mendalami sintaks matplotlib untuk saat ini, di bawah ini adalah deskripsi singkat dari setiap komponen utama grafik kita
- plt. subplot ( ) – digunakan untuk membuat kisi 2-kali-2 dan mengatur ukuran keseluruhan
- zip() – ini adalah fungsi python bawaan yang membuatnya sangat mudah untuk mengulang beberapa iterables dengan panjang yang sama secara bersamaan
- kapak. ratakan( ), di mana ratakan( ) adalah metode array numpy – ini mengembalikan versi rata dari array (kolom) kita
- kapak. set() – memungkinkan kita untuk mengatur semua atribut objek data science d a t a s c i e n c e 0 kita dengan satu metode
Operasi Tambahan
Loop Bersarang
Python memungkinkan kita untuk menggunakan satu loop di dalam loop lain. Ini melibatkan loop luar yang memiliki, di dalam perintahnya, sebuah loop dalam
Perhatikan struktur berikut
1 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 _0Pengulangan for bersarang dapat berguna untuk mengulangi item dalam daftar yang terdiri dari daftar. Dalam daftar yang terdiri dari daftar, jika kita menggunakan hanya satu perulangan for, program akan menampilkan setiap daftar internal sebagai item
1 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 11 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 2Untuk mengakses setiap item dari daftar internal, kami mendefinisikan loop for bersarang
________11stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) _11_______4Di atas, loop luar untuk mengulang melalui daftar-daftar utama (yang berisi dua daftar dalam contoh ini) dan loop dalam untuk mengulang melalui daftar individual itu sendiri. Loop luar mengeksekusi 2 iterasi (untuk setiap sub-daftar) dan pada setiap iterasi kami mengeksekusi loop dalam kami, mencetak semua elemen dari sub-daftar masing-masing
Ini memberi tahu kita bahwa kontrol bergerak dari loop terluar, melintasi loop dalam dan kemudian kembali lagi ke loop luar untuk, berlanjut hingga kontrol telah mencakup seluruh rentang, yaitu 2 kali dalam kasus ini
Melanjutkan dan Melanggar Untuk Loops
Pernyataan kontrol loop mengubah eksekusi loop for dari urutan normalnya
Bagaimana jika kita ingin memfilter bahasa tertentu di dalam lingkaran dalam kita?
1 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 51 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 6Di loop kami di atas, di dalam loop dalam, jika bahasanya sama dengan "Jerman", kami melewati iterasi itu saja dan melanjutkan dengan sisa loop. Loop tidak diakhiri
Mari kita lihat contoh numerik di bawah ini
1 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 71 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 8Jadi di sini, kita telah mendefinisikan loop yang mengulang semua angka 0 hingga 9, dan mengkuadratkan setiap angka. Di dalam loop kami, pada setiap iterasi, kami memeriksa apakah angka tersebut habis dibagi 2, pada titik mana loop akan terus dieksekusi, melewatkan iterasi ketika saya mengevaluasi ke angka genap
Bagaimana dengan pernyataan istirahat? . Mari kita lihat demonstrasi sederhana tentang cara kerjanya menggunakan contoh yang sama seperti di atas
1 plus 2 equals 3 3 plus 4 equals 7 5 plus 6 equals 11 _9stocks = { 'AAPL': 187.31, 'MSFT': 124.06, 'FB': 183.50 } for key, value in stocks.items() : print(key + " : " + str(value)) 0Dalam contoh di atas, pernyataan if kita menyajikan kondisi bahwa jika variabel i bernilai 7, perulangan kita akan terputus, sehingga perulangan kita mengulang bilangan bulat 0 sampai 6 sebelum benar-benar keluar dari perulangan
Mencari lebih banyak?
- Tutorial Python — Daftar tutorial Python untuk ilmu data kami yang terus bertambah
- Kursus Ilmu Data — Tingkatkan studi Anda ke tingkat berikutnya dengan kursus pemrograman, ilmu data, dan statistik yang sepenuhnya interaktif, langsung di browser Anda
Kesimpulan
Dalam tutorial ini, kita belajar tentang beberapa aplikasi for loop yang lebih canggih, dan bagaimana mereka dapat digunakan dalam alur kerja ilmu data Python biasa
Kami belajar cara mengulangi berbagai jenis struktur data, dan bagaimana loop dapat digunakan dengan panda DataFrames dan matplotlib untuk membuat banyak jejak atau sub-plot secara terprogram
Terakhir, kita melihat beberapa teknik yang lebih canggih yang memberi kita lebih banyak kontrol atas operasi dan eksekusi for loop kita
Jika Anda ingin mempelajari lebih lanjut tentang topik ini, lihat Ilmuwan Data Dataquest di jalur Python yang akan membantu Anda siap kerja dalam waktu sekitar 6 bulan
Apakah tutorial ini membantu?
Pilih jalur Anda untuk terus mempelajari keterampilan data yang berharga
Tutorial Python
Latih keterampilan pemrograman Python Anda saat Anda mengerjakan tutorial gratis kami
kursus ilmu data
Berkomitmen pada studi Anda dengan kursus sains data interaktif dalam browser Anda di Python, R, SQL, dan lainnya
for loopsintermediateMatplotlibNumpyPandaspythonrangetutorialTutorials
Tentang Penulis
Kyle O Shea
Co-founder dan Pemimpin Ilmu Data di Kyso. Kyso adalah tempat Anda dapat membuat blog & berbagi ilmu data, dan menemukan wawasan & visualisasi data yang mengagumkan. Ini seperti Medium, tetapi untuk ilmu data