1. 程式人生 > >日常小知識點積累:python list列表推導式、pandas.get_dummies、pandas.DataFrame.dtypes

日常小知識點積累:python list列表推導式、pandas.get_dummies、pandas.DataFrame.dtypes

1.列表推導式基本形式:

 result = [item for item in squence <if conditions>]

 舉例:在以下球員姓名名單中找出名字中含有字母‘a’的球員

roster = ['Irving','Hayward','Horford','Tatum','Jaylen','Rozier','Smart']
contains_a = [i for i in roster if 'a' in i]
contains_a

>>>['Hayward', 'Tatum', 'Jaylen', 'Smart']  

 

2.pandas.get_dummies:

pandas提供的這個方法用於給類別型變數進行one-hot或dummy編碼(二者差別:dummy少用一個維度的變數來表示和one-hot編碼相同的資訊量,具體請見https://blog.csdn.net/weixin_41712499/article/details/82657296

pandas.get_dummies(dataprefix=Noneprefix_sep='_'dummy_na=Falsecolumns=Nonesparse=False

                                 drop_first=Falsedtype=None)

說說裡面幾個引數的意義:

  •  prefixstring, list of strings, or dict of strings.     

字首,即你進行one-hot編碼後多出來的幾列特徵,其列名字首。

  • dummy_na : bool, default False

若這個引數設定為True,則NaN項也會被作為一個特徵取值進行one-hot編碼

  • columns : list-like, default None

想要被進行one-hot編碼的特徵的列名集合。當columns = None,則預設所有dtype為object的資料均進行one-hot編碼

  • drop_first : bool, default False

若True,則進行one-hot編碼的這個特徵(假設有離散的k個取值)被轉化成k個one-hot特徵,即one-hot編碼;

若False,則進行one-hot編碼的這個特徵(假設有離散的k個取值)被轉化成k-1個one-hot特徵,即dummy編碼;

3.pandas.DataFrame.dtypes:

pandas提供的這個方法用於返回這個DataFrame中所有列的dtype,以一個pandas.Series形式返回。這個Series的index就是DataFrame的各列名。

  • 常見的pandas資料dtype:
    dft = pd.DataFrame(dict(A = np.random.rand(3), B = 1, C = 'foo',D =     
                            pd.Timestamp('20010102'), E = 
                            pd.Series([1.0]*3).astype('float32'),F = False, G = 
                            pd.Series([1]*3,dtype='int8')))
    print(dft)
    
              A  B    C          D    E      F  G
    0  0.809585  1  foo 2001-01-02  1.0  False  1
    1  0.128238  1  foo 2001-01-02  1.0  False  1
    2  0.775752  1  foo 2001-01-02  1.0  False  1
    
    
    
    print(dft.dtypes)
    
    A           float64
    B             int64
    C            object
    D    datetime64[ns]
    E           float32
    F              bool
    G              int8
    dtype: object

           請注意:各資料型別的混合列,dtype = 'object'; 我們可以用dtype == ‘object’來挑選categorical資料,因為它們的特徵值大多都是字串格式的。