Bagaimana Anda mengubah kerangka data menjadi int dengan python?

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

  1. Mengubah string/int menjadi int/float
  2. Mengubah float menjadi int
  3. Mengonversi kolom tipe data campuran
  4. Menangani nilai yang hilang
  5. Mengubah kolom uang menjadi float
  6. Mengubah boolean menjadi 0/1
  7. Mengonversi beberapa kolom data sekaligus
  8. Menentukan tipe data saat membaca file CSV
  9. Membuat fungsi kustom untuk mengonversi tipe data
  10. >>> 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 pd
import numpy as np
def 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      object
int_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

>>> 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
_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.dtypes
string_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+ bytes
3 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+ bytes
4

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+ bytes
5. 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+ bytes
7 untuk efisiensi memori yang lebih baik

# string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypes
string_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+ bytes
9 terlebih dahulu

df['float_col'] = df['float_col'].round(0).astype('int')

gambar oleh penulis

Sekarang, angka

# string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypes
string_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.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
1

3. Mengonversi kolom tipe campuran

Mari beralih ke kolom campuran string dan angka. Saat menjalankan

# string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypes
string_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

# Getting 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.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
3 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.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
5

df['mix_col'] = pd.to_numeric(df['mix_col'], errors='coerce')

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.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
7

>>> 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
_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.dtypes
string_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.dtypes
string_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.dtypes
string_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.dtypes
string_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.dtypes
string_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

>>> 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
_1

Sebagai alternatif, kita dapat mengganti Numpy

# string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypes
string_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.dtypes
string_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.dtypes
string_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.dtypes
string_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

>>> 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
_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.dtypes
string_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.dtypes
string_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.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
7

>>> 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
_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.dtypes
string_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.dtypes
string_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.dtypes
string_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, sama seperti yang disebutkan di bagian terakhir). Apa yang dilakukan adalah mengubah
# string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypes
string_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.dtypes
string_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

>>> 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
_4

Sebagai alternatif, kita dapat mengganti Numpy

# string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypes
string_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.dtypes
string_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.dtypes
string_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.dtypes
string_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

>>> 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
_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 angka

Mari 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.dtypes
string_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.dtypes
string_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

>>> 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
_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      object
int_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)

6. Mengubah boolean menjadi 0/1

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.dtypes
string_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.dtypes
string_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

>>> 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
_87. Mengonversi beberapa tipe data kolom sekaligus

Sejauh ini, kami telah mengonversi tipe data satu kolom dalam satu waktu. Contohnya

>>> 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
_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 CSV

Jika 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')
_1

Argumen

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 angka

Ketika 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')
_2

Kita 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')
6

Cara 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: object
00,
>>> 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
01,
>>> 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
02,
# string to int
>>> df['string_col'] = df['string_col'].astype('int')
>>> df.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
7,
>>> 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
04, 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.dtypes
string_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: object
11 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.dtypes
string_col int64
int_col float64
float_col float64
mix_col object
missing_col float64
money_col object
boolean_col bool
custom object
dtype: object
5 untuk memaksa nilai yang tidak valid menjadi
# string to float
>>> df['string_col'] = df['string_col'].astype('float')
>>> df.dtypes
string_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

>>> df.int_col.dtypesdtype('int64')
4Kesimpulan

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

Bagaimana cara mengubah seluruh DataFrame menjadi numerik?

Untuk mengonversi kolom bingkai data R dari integer ke numerik, kita dapat menggunakan fungsi lapply . Misalnya, jika kita memiliki bingkai data df yang berisi semua kolom integer maka kita dapat menggunakan kode lapply(df,as. numerik) untuk mengonversi semua tipe data kolom menjadi tipe data numerik.

Bagaimana cara mengubah tipe data DataFrame dengan Python?

Ubah jenis kolom menjadi objek string menggunakan DataFrame. astype() DataFrame. metode astype() digunakan untuk melemparkan objek panda ke dtype yang ditentukan.

Bagaimana cara mengubah harga kolom panda menjadi bilangan bulat?

Metode berbeda untuk mengonversi kolom menjadi int di pandas DataFrame .
Menggunakan metode astype()
Menggunakan metode astype() dengan kamus
Menggunakan metode astype() dengan menentukan tipe data

Bagaimana cara mengonversi kolom string menjadi int di Python DataFrame?

Untuk mengonversi satu kolom menjadi int, kita menggunakan fungsi astype() dan meneruskan tipe data target sebagai parameter . dtype – menentukan tipe Python atau tipe d NumPy yang menjadi tujuan konversi objek.