[英]Is it necessary or beneficial to convert pandas column from object to string or int/float type?
我有一個帶有兩個變量的pandas df
:
id name
011 Peter Parker
022 Warners Brother
101 Bruce Wayne
當前它們都是對象類型。
假設我想通過過濾某些條件來創建較小的數據框
df_small = df.loc[df['id']=='011']
df_small2 = df.loc[df['name']=='Peter Parker']
我已經想到並看到人們將對象類型列轉換為其他特定的數據類型。 我的問題是,如果我已經可以基於字符串比較(如上)對它們進行過濾,我是否需要這樣做? 將它們轉換為特定的字符串或int / float類型有什么好處?
您詢問了從string
或object
dtypes轉換的好處。 我至少可以想到2個。 以以下數據框為例:
df = pd.DataFrame({'int_col':np.random.randint(0,10,10000), 'str_col':np.random.choice(list('1234567980'), 10000)})
>>> df.head()
int_col str_col
0 7 0
1 0 1
2 1 8
3 6 1
4 6 0
此數據幀包括10000行,並具有一個int
列和一個object
(即string)列以進行顯示。
整數列比對象列占用更少的內存:
>>> import sys
>>> sys.getsizeof(df['int_col'])
80104
>>> sys.getsizeof(df['str_col'])
660104
由於您的示例與過濾有關,因此請看一下對整數而不是字符串進行過濾時的速度差異:
import timeit
def filter_int(df=df):
return df.loc[df.int_col == 1]
def filter_str(df=df):
return df.loc[df.str_col == '1']
>>> timeit.timeit(filter_int, number=100) / 100
0.0006298311000864488
>>> timeit.timeit(filter_str, number=100) / 100
0.0016585511100129225
在某些情況下,這種類型的速度差異可能會極大地加快代碼的速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.