Saat melakukan analisis data, penting untuk memastikan tipe data yang benar. Jika tidak, Anda mungkin mendapatkan hasil atau kesalahan yang tidak diharapkan. Dalam kasus Panda, itu akan menyimpulkan tipe data dengan benar dalam banyak kasus dan Anda dapat melanjutkan analisis Anda 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 cara mengubah data menjadi tipe numerik. Lebih khusus lagi, Anda akan belajar cara menggunakan metode bawaan Panda >>> df.int_col.dtypesdtype('int64')5 dan >>> df.int_col.dtypesdtype('int64')6 untuk menangani masalah umum berikut
- Mengubah string/int menjadi int/float
- Mengubah float menjadi int
- Mengonversi kolom tipe data campuran
- Menangani nilai yang hilang
- Mengubah kolom uang menjadi float
- Mengubah boolean menjadi 0/1
- Mengonversi beberapa kolom data sekaligus
- Menentukan tipe data saat membaca file CSV
- Membuat fungsi kustom untuk mengonversi tipe data
- >>> df.int_col.dtypesdtype('int64')5 vs. >>> df.int_col.dtypesdtype('int64')_6
Untuk demonstrasi, kami membuat kumpulan data dan akan memuatnya dengan sebuah fungsi
import pandas as pdimport numpy as npdef load_df():
return pd.DataFrame({
'string_col': ['1','2','3','4'],
'int_col': [1,2,3,4],
'float_col': [1.1,1.2,1.3,4.7],
'mix_col': ['a', 2, 3, 4],
'missing_col': [1.0, 2, 3, np.nan],
'money_col': ['£1,000.00','£2,400.00','£2,400.00','£2,400.00'],
'boolean_col': [True, False, True, True],
'custom': ['Y', 'Y', 'N', 'N']
})df = load_df()_
gambar oleh penulis
Silakan periksa repo Github untuk kode sumbernya
Memeriksa tipe data
Sebelum kita terjun ke dalam mengubah tipe data, mari kita lihat sekilas cara memeriksa tipe data. Jika kita ingin melihat semua tipe data dalam DataFrame, kita dapat menggunakan atribut >>> df.int_col.dtypesdtype('int64')9
>>> df.dtypesstring_col objectint_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_
Atribut ini juga tersedia dalam bentuk Seri dan kita dapat menggunakannya untuk mengecek tipe data pada kolom tertentu. Misalnya, periksa tipe data int_col
>>> df.int_col.dtypesdtype('int64')Jika kita ingin menjelajahi data, metode >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes_0 mungkin lebih berguna karena menyediakan RangeIndex, kolom total, jumlah non-null, dtypes, dan penggunaan memori. Ini adalah banyak informasi berharga yang dapat membantu kita untuk lebih memahami gambaran keseluruhan dari data
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes_1. Mengubah string menjadi int/float
Cara termudah untuk mengonversi kolom Pandas ke tipe yang berbeda adalah dengan menggunakan metode Seri >>> df.int_col.dtypesdtype('int64')5. Misalnya, untuk mengonversi string menjadi bilangan bulat, kita dapat menyebutnya seperti
# string to int>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
Kita dapat melihat bahwa ini menggunakan bilangan bulat 64-bit secara default. Dalam beberapa situasi, akan lebih hemat memori jika menggunakan bilangan bulat yang lebih pendek saat menangani kumpulan data yang besar. Untuk melakukannya, Anda cukup menelepon >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes_2 , >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes3 atau >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes4
Demikian pula, jika kita ingin mengonversi tipe data menjadi float, kita dapat memanggil >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes5. Secara default, ini menggunakan angka floating-point 64-bit. Kita dapat menggunakan >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes_6 untuk lebih presisi atau >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes7 untuk efisiensi memori yang lebih baik
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')_2. Mengubah float menjadi int
Jika kita ingin mengonversi kolom float menjadi bilangan bulat, kita dapat mencoba menggunakan >>> df.int_col.dtypesdtype('int64')5 yang kita gunakan di atas
df['float_col'] = df['float_col'].astype('int')gambar oleh penulis
Namun, ada sedikit gotcha. Dengan menampilkan DataFrame, kita dapat melihat bahwa kolom dikonversi menjadi bilangan bulat tetapi membulatkan semua nilai ke bawah. Mungkin baik-baik saja, tetapi dalam banyak kasus, saya kira tidak. Jika kita ingin mengonversi ke bilangan bulat dan membulatkan seperti yang kita harapkan, kita dapat melakukan >>> df.info()RangeIndex: 4 entries, 0 to 3
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 string_col 4 non-null object
1 int_col 4 non-null int64
2 float_col 4 non-null float64
3 mix_col 4 non-null object
4 missing_col 3 non-null float64
5 money_col 4 non-null object
6 boolean_col 4 non-null bool
7 custom 4 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 356.0+ bytes9 terlebih dahulu
gambar oleh penulis
Sekarang, angka # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_0 dibulatkan menjadi # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object1
Mari beralih ke kolom campuran string dan angka. Saat menjalankan # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_2, kita mendapatkan ValueError
df['mix_col'] = df['mix_col'].astype('int')
gambar oleh penulis
Kesalahan menunjukkan bahwa ada masalah dengan nilai # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object3 karena tidak dapat diubah menjadi bilangan bulat. Untuk mengatasi masalah ini, kita dapat menggunakan fungsi Panda >>> df.int_col.dtypesdtype('int64')6 dengan argumen # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object5
Tetapi ketika memeriksa >>> df.int_col.dtypesdtype('int64')_9, Anda akan menemukannya dikonversi menjadi # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object7
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_0
Dalam beberapa kasus, Anda tidak ingin output menjadi nilai float yang Anda inginkan menjadi bilangan bulat, misalnya mengonversi kolom ID. Kami dapat menghubungi # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_8. Perhatikan itu memiliki modal # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_9 dan berbeda dari Numpy # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')0. Apa yang dilakukan adalah mengubah # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 Numpy menjadi # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')2 Pandas dan ini memungkinkannya menjadi bilangan bulat
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_1
Sebagai alternatif, kita dapat mengganti Numpy # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')3 dengan nilai lain (misalnya mengganti # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 dengan # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')5) dan memanggil # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object2
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_24. Menangani nilai yang hilang
Sekarang kita harus diperlengkapi sepenuhnya untuk menangani nilai-nilai yang hilang. Di Pandas, nilai yang hilang diberi nilai # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1, kependekan dari "Not a Number". Untuk alasan teknis, nilai # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')_1 ini selalu dari # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object7
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_3
Saat mengubah kolom dengan nilai yang hilang menjadi bilangan bulat, kami juga akan mendapatkan ValueError karena # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 tidak dapat diubah menjadi bilangan bulat
gambar oleh penulis
Untuk mengatasi kesalahan, kita dapat memanggil # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_8 seperti yang kita lakukan di atas (Perhatikan bahwa ini adalah huruf besar # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object9, sama seperti yang disebutkan di bagian terakhir). Apa yang dilakukan adalah mengubah # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 Numpy menjadi # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')2 Pandas dan ini memungkinkannya menjadi bilangan bulat
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_4
Sebagai alternatif, kita dapat mengganti Numpy # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 dengan nilai lain (misalnya mengganti # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 dengan # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')5) dan memanggil # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object2
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_5
Jika Anda ingin mempelajari lebih lanjut tentang menangani nilai yang hilang, Anda dapat memeriksanya
Bekerja dengan nilai yang hilang di Pandas
Tutorial tentang nilai yang hilang di Pandas dan cara menggunakan metode bawaan untuk menanganinya
menuju ilmu data. com
5. Mengubah kolom uang menjadi angkaMari beralih ke kolom uang. Masalahnya adalah jika kita menggunakan metode di atas, kita akan mendapatkan semua nilai # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1 atau # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')2 karena semuanya adalah string dengan simbol df['float_col'] = df['float_col'].round(0).astype('int')1 dan df['float_col'] = df['float_col'].round(0).astype('int')2, dan tidak dapat diubah menjadi angka. Jadi yang pertama harus kita lakukan adalah menghapus semua simbol yang tidak valid
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_6
Kami merangkai 2 df['float_col'] = df['float_col'].round(0).astype('int')3 panggilan, satu untuk df['float_col'] = df['float_col'].round(0).astype('int')1 dan yang lainnya untuk df['float_col'] = df['float_col'].round(0).astype('int')2, untuk menggantinya dengan string kosong
Jika Anda terbiasa dengan ekspresi reguler, kami juga dapat mengganti simbol tersebut dengan ekspresi reguler
>>> df.dtypesstring_col objectint_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_7
df['float_col'] = df['float_col'].round(0).astype('int')_6 mengatakan kami ingin mengganti df['float_col'] = df['float_col'].round(0).astype('int')1 dan df['float_col'] = df['float_col'].round(0).astype('int')2 dengan string kosong. Argumen df['float_col'] = df['float_col'].round(0).astype('int')_9 menganggap pola yang diteruskan adalah ekspresi reguler (Perhatikan defaultnya adalah # Getting ValueError
df['mix_col'] = df['mix_col'].astype('int')0)
Kami memiliki # Getting ValueError
df['mix_col'] = df['mix_col'].astype('int')0/# Getting ValueError
df['mix_col'] = df['mix_col'].astype('int')2, tetapi Anda dapat membayangkan kasus di mana membutuhkan ini sebagai # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')5 dan # Getting ValueError
df['mix_col'] = df['mix_col'].astype('int')4 , misalnya, jika Anda membuat model pembelajaran mesin dan ini adalah salah satu fitur input Anda, Anda memerlukannya numerik dan . Ini sebenarnya sangat sederhana, Anda cukup menelepon # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object2
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_87. Mengonversi beberapa tipe data kolom sekaligus
Sejauh ini, kami telah mengonversi tipe data satu kolom dalam satu waktu. Contohnya
>>> df.dtypesstring_col objectint_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_9
Ada metode DataFrame juga disebut >>> df.int_col.dtypesdtype('int64')5 memungkinkan kita untuk mengonversi beberapa tipe data kolom sekaligus. Ini menghemat waktu ketika Anda memiliki banyak kolom yang ingin Anda ubah
>>> df.int_col.dtypesdtype('int64')_08. Menentukan tipe data setiap kolom saat membaca file CSVJika Anda ingin menyetel tipe data untuk setiap kolom saat membaca file CSV, Anda dapat menggunakan argumen df['mix_col'] = pd.to_numeric(df['mix_col'], errors='coerce')1 saat memuat data dengan df['mix_col'] = pd.to_numeric(df['mix_col'], errors='coerce')2
>>> df.int_col.dtypesdtype('int64')_1Argumen df['mix_col'] = pd.to_numeric(df['mix_col'], errors='coerce')_1 mengambil kamus dengan kunci yang mewakili kolom dan nilai yang mewakili tipe data. Perbedaan antara ini dan di atas adalah bahwa metode ini melakukan konversi selama proses membaca dan dapat menghemat waktu dan lebih hemat memori.
9. Membuat fungsi khusus untuk mengonversi data menjadi angkaKetika data agak rumit untuk dikonversi, kita dapat membuat fungsi kustom dan menerapkannya ke setiap nilai untuk mengonversi ke tipe data yang sesuai
Misalnya kolom money_col, berikut adalah fungsi sederhana yang bisa kita gunakan
>>> df.int_col.dtypesdtype('int64')_2Kita juga bisa menggunakan fungsi lambda
>>> df.int_col.dtypesdtype('int64')_310. Perbedaan antara >>> df.int_col.dtypesdtype('int64')5 dan >>> df.int_col.dtypesdtype('int64')6Cara termudah untuk mengonversi tipe data dari satu ke yang lain adalah dengan menggunakan metode >>> df.int_col.dtypesdtype('int64')5. Metode ini didukung oleh Pandas DataFrame dan Series. Jika Anda sudah memiliki tipe data numerik (df['mix_col'] = pd.to_numeric(df['mix_col'], errors='coerce')7, ________30______8, df['mix_col'] = pd.to_numeric(df['mix_col'], errors='coerce')9, >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object00, >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object01, >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object02, # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object7, >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object04, dan ________6____0___5) Anda juga dapat menggunakan_____ __5)
- mengubahnya menjadi tipe data numerik lain (int to float, float to int, dll. )
- gunakan untuk downcast ke yang lebih kecil atau upcast ke ukuran byte yang lebih besar
Namun, >>> df.int_col.dtypesdtype('int64')5 tidak akan berfungsi untuk kolom dengan tipe campuran. Misalnya, mixed_col memiliki >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_08 dan missing_col memiliki # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1. Jika kami mencoba menggunakan >>> df.int_col.dtypesdtype('int64')_5 kami akan mendapatkan ValueError. Pada Panda 0. 20. 0, kesalahan ini dapat ditekan dengan menyetel argumen >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object11 tetapi data asli Anda akan dikembalikan tanpa tersentuh
Fungsi Pandas >>> df.int_col.dtypesdtype('int64')_6 dapat menangani nilai-nilai ini dengan lebih baik. Daripada gagal, kita dapat menyetel argumen # string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypesstring_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object5 untuk memaksa nilai yang tidak valid menjadi # string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypesstring_col float64
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object# For more precision
>>> df['string_col'] = df['string_col'].astype('float128')# For more memory efficiency
>>> df['string_col'] = df['string_col'].astype('float16')
>>> df['string_col'] = df['string_col'].astype('float32')1
Kita telah melihat bagaimana kita dapat mengonversi kolom data Pandas menjadi tipe numerik dengan >>> df.int_col.dtypesdtype('int64')5 dan >>> df.int_col.dtypesdtype('int64')6. >>> df.int_col.dtypesdtype('int64')5 adalah cara paling sederhana dan menawarkan lebih banyak kemungkinan dalam cara konversi, sementara >>> df.int_col.dtypesdtype('int64')6 memiliki fungsi yang lebih kuat untuk penanganan kesalahan
Saya harap artikel ini akan membantu Anda menghemat waktu dalam mempelajari Panda. Saya menyarankan Anda untuk melihat dokumentasi untuk >>> df.dtypesstring_col object
int_col int64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object_19 dan >>> df.int_col.dtypesdtype('int64')6 API dan mengetahui tentang hal-hal lain yang dapat Anda lakukan
Terima kasih sudah membaca. Silakan periksa notebook untuk kode sumbernya dan nantikan terus jika Anda tertarik dengan aspek praktis pembelajaran mesin