日常小知识点积累: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
(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False,drop_first=False, dtype=None)
说说里面几个参数的意义:
- prefix:string, 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数据,因为它们的特征值大多都是字符串格式的。