Objek python apa yang Anda masukkan ke kerangka data?

Saat melakukan analisis data, penting untuk memastikan bahwa Anda menggunakan tipe data yang benar; . Dalam kasus panda, ini akan menyimpulkan jenis data dengan benar dalam banyak kasus dan Anda dapat melanjutkan analisis tanpa memikirkan topik lebih lanjut

Terlepas dari seberapa baik panda bekerja, pada titik tertentu dalam proses analisis data Anda, Anda mungkin perlu secara eksplisit mengonversi data dari satu jenis ke jenis lainnya. Artikel ini akan membahas tipe data dasar panda (alias Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 0 ), bagaimana mereka memetakan ke tipe data python dan numpy dan opsi untuk mengonversi dari satu tipe panda ke tipe lainnya

Jenis Data Panda

Tipe data pada dasarnya adalah konstruksi internal yang digunakan bahasa pemrograman untuk memahami cara menyimpan dan memanipulasi data. Misalnya, sebuah program perlu memahami bahwa Anda dapat menjumlahkan dua angka seperti 5 + 10 untuk mendapatkan 15. Atau, jika Anda memiliki dua string seperti “cat” dan “hat”, Anda dapat menggabungkan (menambahkan) keduanya untuk mendapatkan “cathat. ”

Poin yang mungkin membingungkan tentang tipe data panda adalah bahwa ada beberapa tumpang tindih antara panda, python, dan numpy. Tabel ini merangkum poin-poin utama

Panda Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 1 mappingPandas dtypePython typeNumPy typeUsageobjectstr or mixedstring_, unicode_, mixed typesText or mixed numeric and non-numeric valuesint64intint_, int8, int16, int32, int64, uint8, uint16, uint32, uint64Integer angkafloat64floatfloat_, float3float_, float16 NAdatetime64[ns]Date and time valuestimedelta[ns]NANADifferences between two datetimescategoryNANAFinite list of text values

Untuk sebagian besar, tidak perlu khawatir tentang menentukan apakah Anda harus mencoba memaksa tipe pandas secara eksplisit ke tipe NumPy yang sesuai. Sebagian besar waktu, menggunakan tipe panda default Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 2 dan Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 3 akan berfungsi. Satu-satunya alasan yang saya sertakan dalam tabel ini adalah terkadang Anda mungkin melihat jenis numpy muncul secara online atau dalam analisis Anda sendiri

Untuk artikel ini, saya akan fokus pada jenis panda berikut

  • Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _4
  • Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _2
  • Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _3
  • Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _7
  • Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _8

Jenis Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 9 dan df.info() 0 lebih baik disajikan dalam artikel mereka sendiri jika ada minat. Namun, pendekatan dasar yang diuraikan dalam artikel ini juga berlaku untuk jenis ini

Satu item lain yang ingin saya soroti adalah bahwa tipe data Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 4 sebenarnya dapat berisi beberapa tipe berbeda. Misalnya, kolom a dapat menyertakan bilangan bulat, pelampung, dan string yang secara kolektif diberi label sebagai Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 4. Oleh karena itu, Anda mungkin memerlukan beberapa teknik tambahan untuk menangani tipe data campuran di Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 4 kolom. Lihat artikel ini untuk contoh perluasan pembersihan mata uang yang dijelaskan di bawah

Mengapa kami peduli?

Tipe data adalah salah satu hal yang cenderung tidak Anda pedulikan sampai Anda mendapatkan kesalahan atau beberapa hasil yang tidak terduga. Ini juga salah satu hal pertama yang harus Anda periksa setelah memuat data baru ke dalam panda untuk analisis lebih lanjut

Saya akan menggunakan file CSV yang sangat sederhana untuk mengilustrasikan beberapa kesalahan umum yang mungkin Anda lihat di panda jika tipe datanya tidak benar. Selain itu, contoh notebook tersedia di github.

import numpy as np import pandas as pd df = pd.read_csv("sales_data_types.csv")

Nomor PelangganNama Pelanggan20162017Persen PertumbuhanJan UnitBulanHariTahunAktif010002. 0Quest Industries$125.000. 00$162500. 0030. 00%5001102015Y1552278. 0Smith Plumbing$920.000. 00$101,2000. 0010. 00%7006152014Y223477. 0 ACME Industri$50.000. 00$62500. 0025. 00%1253292016Y324900. 0Brekke LTD $350.000. 00$490000. 004. 00%7510272015Y4651029. 0Pelabuhan Co$15.000. 00$12750. 00-15. 00%Tutup222014N

Sekilas, data terlihat baik-baik saja sehingga kami dapat mencoba melakukan beberapa operasi untuk menganalisis data. Mari kita coba menjumlahkan penjualan tahun 2016 dan 2017

df['2016'] + df['2017']

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object

Ini tidak terlihat benar. Kami ingin mendapatkan total yang ditambahkan bersama tetapi panda hanya menggabungkan dua nilai bersama untuk membuat satu string panjang. Petunjuk untuk soal tersebut adalah baris yang menyatakan df.info() 4 An Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 4 adalah string dalam panda sehingga ia melakukan operasi string, bukan operasi matematika

Jika kita ingin melihat semua tipe data dalam kerangka data, gunakan df.info() 6

df.dtypes

Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object

Selain itu, fungsi df.info() _7 menampilkan info yang lebih berguna

df.info()

<class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes

Setelah melihat jenis data yang ditetapkan secara otomatis, ada beberapa kekhawatiran

  • df.info() _8 adalah Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 3 tetapi seharusnya Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 2
  • Kolom <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 1 dan <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 2 disimpan sebagai objek, bukan nilai numerik seperti Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 3 atau Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 2
  • <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 5 dan <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 6 juga disimpan sebagai objek bukan nilai numerik
  • Kami memiliki <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 7 , <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 8 dan <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 9 kolom yang harus diubah menjadi Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 7
  • Kolom df['Customer Number'].astype('int') _1 harus berupa boolean

Sebelum kami membersihkan jenis data ini, akan sangat sulit untuk melakukan banyak analisis tambahan pada data ini

Untuk mengonversi jenis data di panda, ada tiga opsi dasar

  • Gunakan df['Customer Number'].astype('int') 2 untuk memaksa Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 1 yang sesuai
  • Buat fungsi kustom untuk mengonversi data
  • Gunakan fungsi panda seperti df['Customer Number'].astype('int') _4 atau df['Customer Number'].astype('int') 5

Menggunakan fungsi df['Customer Number'].astype('int') _2

Cara paling sederhana untuk mengonversi kolom data panda ke tipe yang berbeda adalah dengan menggunakan df['Customer Number'].astype('int') 2. Misalnya, untuk mengonversi df.info() _8 menjadi bilangan bulat, kita dapat menyebutnya seperti ini

df['Customer Number'].astype('int')

0 10002 1 552278 2 23477 3 24900 4 651029 Name: Customer Number, dtype: int64

Untuk benar-benar mengubah nomor pelanggan dalam kerangka data asli, pastikan untuk menetapkannya kembali karena fungsi df['Customer Number'].astype('int') 2 mengembalikan salinan

df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes

df['2016'] + df['2017'] 0

Dan inilah bingkai data baru dengan Nomor Pelanggan sebagai bilangan bulat

Nomor PelangganNama Pelanggan20162017Persen PertumbuhanJan UnitBulanHariTahunAktif010002Quest Industries$125.000. 00$162500. 0030. 00%5001102015Y1552278Smith Plumbing$920,000. 00$101,2000. 0010. 00%7006152014Y223477 ACME Industri$50.000. 00$62500. 0025. 00%1253292016Y324900Brekke LTD $350.000. 00$490000. 004. 00%7510272015Y4651029Pelabuhan Co$15.000. 00$12750. 00-15. 00%Tutup222014N

Ini semua terlihat bagus dan tampaknya cukup sederhana. Mari coba lakukan hal yang sama pada kolom <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 1 kita dan ubah menjadi angka floating point

df['2016'] + df['2017'] 1

df['2016'] + df['2017'] 2

Dengan cara yang sama, kita dapat mencoba mengonversi kolom <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 6 menjadi bilangan bulat

df['2016'] + df['2017'] _3

df['2016'] + df['2017'] 4

Keduanya mengembalikan 0 10002 1 552278 2 23477 3 24900 4 651029 Name: Customer Number, dtype: int64 2 pengecualian yang berarti bahwa konversi tidak berhasil

Dalam setiap kasus, data menyertakan nilai yang tidak dapat diinterpretasikan sebagai angka. Di kolom penjualan, data menyertakan simbol mata uang serta koma di setiap nilai. Di kolom <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes _6 nilai terakhir adalah "Tertutup" yang bukan angka;

Sejauh ini tidak terlihat bagus untuk df['Customer Number'].astype('int') 2 sebagai alat. Kita harus mencobanya sekali lagi pada kolom df['Customer Number'].astype('int') 1

df['2016'] + df['2017'] 5

df['2016'] + df['2017'] 6

Sepintas, ini terlihat baik-baik saja tetapi setelah diperiksa lebih dekat, ada masalah besar. Semua nilai ditafsirkan sebagai 0 10002 1 552278 2 23477 3 24900 4 651029 Name: Customer Number, dtype: int64 _6 tetapi pelanggan terakhir memiliki bendera Aktif 0 10002 1 552278 2 23477 3 24900 4 651029 Name: Customer Number, dtype: int64 7 jadi sepertinya ini tidak benar

Kesimpulan dari bagian ini adalah bahwa df['Customer Number'].astype('int') 2 hanya akan berfungsi jika

  • datanya bersih dan dapat dengan mudah diartikan sebagai angka
  • Anda ingin mengonversi nilai numerik menjadi objek string

Jika data memiliki karakter non-numerik atau tidak homogen, maka df['Customer Number'].astype('int') 2 tidak akan menjadi pilihan yang baik untuk konversi jenis. Anda perlu melakukan transformasi tambahan agar perubahan jenis berfungsi dengan benar

Fungsi Konversi Khusus

Karena data ini sedikit lebih rumit untuk dikonversi, kita dapat membuat fungsi kustom yang diterapkan ke setiap nilai dan mengonversinya ke jenis data yang sesuai

Untuk konversi mata uang (dari kumpulan data khusus ini), berikut adalah fungsi sederhana yang dapat kita gunakan

df['2016'] + df['2017'] 7

Kode menggunakan fungsi string python untuk menghapus '$" dan ',' dan kemudian mengonversi nilainya menjadi angka floating point. Dalam kasus khusus ini, kita juga dapat mengonversi nilai menjadi bilangan bulat, tetapi saya memilih untuk menggunakan floating point dalam kasus ini

Saya juga curiga seseorang akan merekomendasikan agar kami menggunakan jenis df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 0 untuk mata uang. Ini bukan tipe data asli di panda, jadi saya sengaja tetap menggunakan pendekatan float

Yang juga perlu diperhatikan, adalah bahwa fungsi mengubah angka menjadi python df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 1 tetapi panda secara internal mengubahnya menjadi df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 2 Seperti yang disebutkan sebelumnya, saya sarankan Anda mengizinkan panda untuk mengonversi ke ukuran tertentu df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 1 atau df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 4 sesuai. Anda tidak perlu mencoba men-downcast ke ukuran byte yang lebih kecil atau upcast ke ukuran byte yang lebih besar kecuali Anda benar-benar tahu mengapa Anda perlu melakukannya

Sekarang, kita dapat menggunakan fungsi pandas df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes _5 untuk menerapkan ini ke semua nilai di kolom 2016

df['2016'] + df['2017'] 8

df['2016'] + df['2017'] _9

Kesuksesan. Semua nilai ditampilkan sebagai Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _3 sehingga kita dapat melakukan semua fungsi matematika yang kita perlukan

Saya yakin pembaca yang lebih berpengalaman bertanya mengapa saya tidak menggunakan fungsi lambda saja?

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _0

Menggunakan df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes _7 kita dapat merampingkan kode menjadi 1 baris yang merupakan pendekatan yang benar-benar valid. Saya memiliki tiga masalah utama dengan pendekatan ini

  • Jika Anda baru belajar python/panda atau jika seseorang yang baru mengenal python akan memelihara kode, saya pikir fungsi yang lebih panjang lebih mudah dibaca. Alasan utamanya adalah menyertakan komentar dan dapat dipecah menjadi beberapa langkah. df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes _7 fungsi sedikit lebih sulit untuk dipahami pengguna baru
  • Kedua, jika Anda akan menggunakan fungsi ini di banyak kolom, saya memilih untuk tidak menduplikasi fungsi long lambda
  • Terakhir, menggunakan fungsi memudahkan untuk membersihkan data saat menggunakan df['2016'] + df['2017'] 00 Saya akan membahas penggunaan di akhir artikel

Beberapa mungkin juga berpendapat bahwa pendekatan berbasis lambda lainnya memiliki peningkatan kinerja dibandingkan fungsi kustom. Itu mungkin benar, tetapi untuk tujuan mengajar pengguna baru, menurut saya pendekatan fungsi lebih disukai

Berikut contoh lengkap mengonversi data di kedua kolom penjualan menggunakan fungsi df['2016'] + df['2017'] 01

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _1

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _2

Untuk contoh lain menggunakan df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes _7 vs. sebuah fungsi, kita dapat melihat proses untuk memperbaiki kolom <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 5

Menggunakan df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes _7

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _3

Melakukan hal yang sama dengan fungsi kustom

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _4

Keduanya menghasilkan nilai yang sama

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _5

Fungsi kustom terakhir yang akan saya bahas adalah menggunakan df['2016'] + df['2017'] 05 untuk mengonversi kolom aktif menjadi boolean. Ada beberapa cara yang mungkin untuk memecahkan masalah khusus ini. Pendekatan df['2016'] + df['2017'] _05 berguna untuk berbagai jenis masalah, jadi saya memilih untuk memasukkannya di sini

Ide dasarnya adalah menggunakan fungsi df['2016'] + df['2017'] _05 untuk mengonversi semua nilai “Y” menjadi 0 10002 1 552278 2 23477 3 24900 4 651029 Name: Customer Number, dtype: int64 6 dan semua yang lain yang ditetapkan df['2016'] + df['2017'] 09

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _6

Yang menghasilkan kerangka data berikut

Nomor PelangganNama Pelanggan20162017Persen PertumbuhanJan UnitBulanHariTahunAktif010002. 0Quest Industries$125.000. 00$162500. 0030. 00%5001102015Benar1552278. 0Smith Plumbing$920.000. 00$101,2000. 0010. 00%7006152014Benar223477. 0 ACME Industri$50.000. 00$62500. 0025. 00%1253292016Benar324900. 0Brekke LTD $350.000. 00$490000. 004. 00%7510272015Benar4651029. 0Pelabuhan Co$15.000. 00$12750. 00-15. 00%Tertutup222014Salah

dtype diatur dengan tepat ke Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 8

df.dtypes

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _8

Apakah Anda memilih untuk menggunakan fungsi df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 7, membuat fungsi python yang lebih standar, atau menggunakan pendekatan lain seperti df['2016'] + df['2017'] 05 , pendekatan ini sangat fleksibel dan dapat disesuaikan untuk kebutuhan data unik Anda sendiri

Fungsi pembantu panda

Panda memiliki jalan tengah antara fungsi tumpul df['Customer Number'].astype('int') 2 dan fungsi kustom yang lebih kompleks. Fungsi pembantu ini bisa sangat berguna untuk konversi jenis data tertentu

Jika Anda telah mengikuti, Anda akan melihat bahwa saya belum melakukan apa pun dengan kolom tanggal atau kolom <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 6. Keduanya dapat dikonversi hanya dengan menggunakan fungsi panda bawaan seperti df['2016'] + df['2017'] 15 dan df['2016'] + df['2017'] 16

Alasan konversi <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes _6 bermasalah adalah penyertaan nilai non-numerik di kolom. Jika kami mencoba menggunakan df['Customer Number'].astype('int') _2 kami akan mendapatkan kesalahan (seperti yang dijelaskan sebelumnya). Fungsi df['2016'] + df['2017'] _15 dapat menangani nilai-nilai ini dengan lebih baik

0 $125,000.00$162500.00 1 $920,000.00$101,2000.00 2 $50,000.00$62500.00 3 $350,000.00$490000.00 4 $15,000.00$12750.00 dtype: object _9

df.dtypes 0

Ada beberapa item catatan. Pertama, fungsi dengan mudah memproses data dan membuat kolom Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 3. Selain itu, ini menggantikan nilai "Tertutup" yang tidak valid dengan nilai df['2016'] + df['2017'] 21 karena kami melewati df['2016'] + df['2017'] 22. Kita dapat meninggalkan nilai itu di sana atau mengisinya dengan 0 menggunakan df['2016'] + df['2017'] 23

df.dtypes 1

df.dtypes 2

Konversi terakhir yang akan saya bahas adalah mengonversi kolom bulan, hari, dan tahun yang terpisah menjadi df['2016'] + df['2017'] 24. Fungsi panda df['2016'] + df['2017'] 16 cukup dapat dikonfigurasi tetapi juga cukup cerdas secara default

df.dtypes 3

df.dtypes 4

Dalam hal ini, fungsi menggabungkan kolom menjadi rangkaian baru dengan tipe df['2016'] + df['2017'] 26 yang sesuai

Kita perlu memastikan untuk menetapkan nilai ini kembali ke kerangka data

df.dtypes 5

Nomor PelangganNama Pelanggan20162017Persen PertumbuhanJan UnitBulanHariTahunAktifMulai_Tanggal010002Quest Industries125000. 0162500. 00. 30500. 01102015Benar2015-01-101552278Smith Plumbing920000. 01012000. 00. 10700. 06152014Benar2014-06-15223477 ACME Industrial50000. 062500. 00. 25125. 03292016Benar2016-03-29324900Brekke LTD 350000. 0490000. 00. 0475. 010272015Benar2015-10-274651029Pelabuhan Co15000. 012750. 0-0. 15NaN222014False2014-02-02

Sekarang data dikonversi dengan benar ke semua jenis yang kita perlukan

df.dtypes

df.dtypes 7

Kerangka data siap untuk dianalisis

Menyatukan semuanya

Konsep dasar penggunaan df['Customer Number'].astype('int') _2 dan fungsi kustom dapat dimasukkan sangat awal dalam proses pengambilan data. Jika Anda memiliki file data yang ingin Anda proses berulang kali dan formatnya selalu sama, Anda dapat menentukan Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 1 dan df['2016'] + df['2017'] 29 untuk diterapkan saat membaca data. Sangat membantu untuk memikirkan Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object _1 sebagai melakukan df['Customer Number'].astype('int') 2 pada data. Argumen df['2016'] + df['2017'] _29 memungkinkan Anda menerapkan fungsi ke berbagai kolom input yang serupa dengan pendekatan yang diuraikan di atas

Penting untuk dicatat bahwa Anda hanya dapat menerapkan fungsi Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 1 atau df['2016'] + df['2017'] 34 ke kolom tertentu setelah menggunakan pendekatan ini. Jika Anda mencoba menerapkan keduanya pada kolom yang sama, dtype akan dilewati

Berikut adalah contoh sederhana yang melakukan hampir semua konversi pada saat data dibaca ke dalam kerangka data

df.dtypes 8

df.dtypes _9

Seperti disebutkan sebelumnya, saya memilih untuk menyertakan df["Customer Number"] = df['Customer Number'].astype('int') df.dtypes 7 contoh serta contoh fungsi untuk mengkonversi data. Satu-satunya fungsi yang tidak dapat diterapkan di sini adalah konversi <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 7 , <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 8 dan <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 10 columns): Customer Number 5 non-null float64 Customer Name 5 non-null object 2016 5 non-null object 2017 5 non-null object Percent Growth 5 non-null object Jan Units 5 non-null object Month 5 non-null int64 Day 5 non-null int64 Year 5 non-null int64 Active 5 non-null object dtypes: float64(1), int64(3), object(6) memory usage: 480.0+ bytes 9 kolom ke kolom df['2016'] + df['2017'] 24 yang sesuai. Namun, ini adalah konvensi andal yang dapat membantu menyempurnakan pipeline pemrosesan data Anda

Ringkasan

Salah satu langkah pertama saat menjelajahi kumpulan data baru adalah memastikan tipe data disetel dengan benar. Panda sering membuat kesimpulan yang masuk akal, tetapi ada cukup kehalusan dalam kumpulan data sehingga penting untuk mengetahui cara menggunakan berbagai opsi konversi data yang tersedia di panda. Jika Anda memiliki kiat lain yang telah Anda gunakan atau jika ada minat untuk menjelajahi jenis data Customer Number float64 Customer Name object 2016 object 2017 object Percent Growth object Jan Units object Month int64 Day int64 Year int64 Active object dtype: object 9, jangan ragu untuk berkomentar di bawah

Bagaimana Anda mengubah objek menjadi DataFrame dengan Python?

Konversi Daftar ke DataFrame dengan Python .
2) Menggunakan daftar dengan nama indeks dan kolom. Kita dapat membuat bingkai data dengan memberi nama pada kolom dan mengindeks baris. .
3) Menggunakan fungsi zip(). .
4) Membuat dari daftar multi-dimensi. .
5) Menggunakan daftar multidimensi dengan nama kolom. .
6) Menggunakan daftar dalam kamus

Apa cara yang tepat untuk memuat file CSV menggunakan panda?

Panda Baca CSV .
Muat CSV ke dalam DataFrame. impor panda sebagai pd. df = pd. baca_csv('data. csv').
Cetak DataFrame tanpa metode to_string(). impor panda sebagai pd. .
Periksa jumlah baris maksimum yang dikembalikan. impor panda sebagai pd. .
Tingkatkan jumlah maksimum baris untuk menampilkan seluruh DataFrame. impor panda sebagai pd

Apa itu objek Dtype di DataFrame?

DataFrame - properti dtypes . Ini mengembalikan Seri dengan tipe data dari setiap kolom. Indeks hasilnya adalah kolom DataFrame asli. Kolom dengan tipe campuran disimpan dengan tipe objek. used to find the dtypes in the DataFrame. This returns a Series with the data type of each column. The result's index is the original DataFrame's columns. Columns with mixed types are stored with the object dtype.

Apakah bingkai data merupakan objek Python?

DataFrame. DataFrame adalah struktur data berlabel 2 dimensi dengan kolom dari tipe yang berpotensi berbeda. Anda dapat menganggapnya seperti spreadsheet atau tabel SQL, atau kumpulan objek Seri. Ini umumnya merupakan objek pandas yang paling umum digunakan .

Postingan terbaru

LIHAT SEMUA