本校暑假训练营1

    技术2024-05-06  86

    目录:

    Pandas介绍

    Python中的比较运算符

    Pandas设置行列缺失值

    找出缺失值处理

    实验练习

    1-1 库的引入选择和获取数据数据切片与标量值比较使用标量值进行筛选使用标量值赋值 1-2 库的引入找到缺失的数据填充缺失的值缺失值的计数筛选掉缺失值

    开始

    一、Pandas的介绍

    百度百科:

    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

    Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

    pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

    你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

    用途:Python数据分析模块

    二、Python中的比较运算符

    三、Pandas设置行列缺省值

    针对某些缺失的数据,我们要做的是

    找出这些数据—》处理

    找出

    设置并找出缺失值

    ## 引入包 import numpy as np import pandas as pd from pandas import Series,DataFrame ## 设置含有缺失项的数据 missing = np.nan series_obj = Series(['a','b',missing,'d','e','f',missing,'h']) series_obj ## 判断空值 # object_name.isnull() # .isnull()方法返回True/False布尔值,指示Pandas对象中的元素是否为空值。 # 返回新的对象,由True和Fals组成 series_obj.isnull() 处理

    创建含缺失值的实例对象

    # 随机种子 np.random.seed(25) df_obj = DataFrame(np.random.randn(36).reshape(6,6)) # rshape 设置行列数 df_obj # 手动设置缺失值 df_obj.iloc[3:5,0] = missing # 设置第2行第三行,第五列 df_obj.iloc[1:4,5] = missing df_obj

    处理缺失值

    方式1 # object_name.fillna(numeric value) # .fillna()方法从Pandas对象中查找每个缺少的值,并用传入的数值进行填充 filled_df = df_obj.fillna(0) filled_df 方式2 # object_name.fillna(dict) # 可以将字典传递给.fillna()方法。 然后,该方法将填充每个列(由字典键指定)中的缺失值(在相应的字典值中指定)。 # 字典传入缺失的地方值 filled_df = df_obj.fillna({0:0.1,5:1.25}) filled_df 方式3 # object_name.fillna(method ='ffill') # 当使用参数method ='ffill'时,.fillna()方法将使用列前排非空元素的值来填充缺少的值 filled_df = df_obj.fillna(method = 'ffill') filled_df

    四、实验练习

    1-1

    库的引入 import numpy as np import pandas as pd from pandas import Series,DataFrame 选择和获取数据 案例一 # 创造数据 series_obj = Series(['a','b','c','d','e','f'],index = ['row1','row2','row3','row4','row5','row6',]) series_obj 方法1 # ['标签索引'] # 当使用带有标签索引的方括号时,它会告诉Python选择和获取具有该标签索引的所有记录。 series_obj['row3'] 方法2 # [整数索引] # 当在方括号中使用整数索引时,它会告诉Python选择并检索具有指定整数索引的所有记录。 series_obj[[0,5]] 案例二 创造数据 #随机数种子 np.random.seed(25) # 使用随机数创造6行6列组成的二维表数据,并设置行号、列号 df_obj = DataFrame(np.random.rand(36).reshape(6,6),index =['row1','row2','row3','row4','row5','row6'],columns = ['col1','col2','col3','col4','col5','col6']) df_obj 方法1 # object_name.loc[['行标签索引','行标签索引'], ['列标签索引','列标签索引']] # 当调用.loc[]索引器,并传入一组行和列的标签索引时,将告诉Python仅选择和检索那些特定的行和列。 df_obj.loc[['row2','row5'],['col2','col5']] 方法2 # object_name.iloc[[行整数索引,行整数索引], [列整数索引,列整数索引]] # 当您调用.iloc[]索引器,并传入一组行和列的整数索引时,将告诉Python仅选择和检索那些特定的行和列。 df_obj.iloc[[1,4],[1,4]] 数据切片 可以使用数据标签或者索引来切片 # ['开始标签索引':'结束标签索引'] # 数据切片可以选择和检索从开始标签索引到结束标签索引以及之间的所有记录。 series_obj['row3':'row5'] series_obj[2:5] # 上面二者效果相同得到 row3 c row4 d row5 e dtype: object

    注意:

    这里的索引整数切片遵循左开右闭的规则,即左边边界的能取到,右边边界取不到

    这里的索引是从0开始的(2对应的第三行可以取到,5对应的第6行取不到)

    与标量值比较 # object_name < 标量值 # 您可以使用比较运算符(例如 > 或 < )对所有记录返回True/False值,表示每个元素与标量值的比较结果。 df_obj<0.2 # 得到结果 col1 col2 col3 col4 col5 col6 row1 False False False True False True row2 False False False False False True row3 False False True False False False row4 False False False False False False row5 False False True False False False row6 False False False False False False 使用标量值进行筛选 # object_name[object_name > 标量值] # 也可以使用比较运算符和标量值进行索引,仅返回满足比较表达式结果的记录。 # 创造数据 series_num = Series(np.arange(0,8),index=['行 1', '行 2', '行 3', '行 4', '行 5', '行 6','行 7','行 8']) # 选出来满足表达式的行 series_num[series_num>6] 使用标量赋值 实现指定位置赋值 # ['标签索引', '标签索引', '标签索引'] = 标量值 # 可以选择与指定标签索引关联的所有记录,将这些值设置为等于一个标量值即可完成赋值。 series_num[['行 1','行 5', '行 8']] = 0 series_num

    1-2

    库的引入 import numpy as np import pandas as pd from pandas import Series,DataFrame 找到缺失的数据 missing = np.nan series_obj = Series(['a','b',missing,'d','e','f',missing,'h']) series_obj 得到 0 a 1 b 2 NaN 3 d 4 e 5 f 6 NaN 7 h dtype: object # object_name.isnull() # .isnull()方法返回True/False布尔值,指示Pandas对象中的元素是否为空值。 # 返回新的对象,由True和Fals组成 series_obj.isnull() 得到 0 False 1 False 2 True 3 False 4 False 5 False 6 True 7 False dtype: bool 填充缺失的值 # 随机种子 np.random.seed(25) df_obj = DataFrame(np.random.randn(36).reshape(6,6)) # rshape 设置行列数 df_obj # 手动设置缺失值 df_obj.iloc[3:5,0] = missing # 设置第2行第三行,第五列 df_obj.iloc[1:4,5] = missing df_obj 得到 0 1 2 3 4 5 0 0.228273 1.026890 -0.839585 -0.591182 -0.956888 -0.222326 1 -0.619915 1.837905 -2.053231 0.868583 -0.920734 NaN 2 2.152957 -1.334661 0.076380 -1.246089 1.202272 NaN 3 NaN -0.419678 2.294842 -2.594487 2.822756 NaN 4 NaN -1.976254 0.533340 -0.290870 -0.513520 1.982626 5 0.226001 -1.839905 1.607671 0.388292 0.399732 0.405477 方法1 # object_name.fillna(numeric value) # .fillna()方法从Pandas对象中查找每个缺少的值,并用传入的数值进行填充 filled_df = df_obj.fillna(0) filled_df 方法2 # object_name.fillna(dict) # 可以将字典传递给.fillna()方法。 然后,该方法将填充每个列(由字典键指定)中的缺失值(在相应的字典值中指定)。 # 字典传入缺失的地方值 filled_df = df_obj.fillna({0:0.1,5:1.25}) filled_df 方法3 # object_name.fillna(method ='ffill') # 当使用参数method ='ffill'时,.fillna()方法将使用列前排非空元素的值来填充缺少的值 filled_df = df_obj.fillna(method = 'ffill') filled_df 缺失值的计数 # object_name.isnull().sum() # 使用.isnull()方法,然后从其返回的布尔值矩阵中调用.sumn()方法,即可返回DataFrame每列有多少个缺失值的计数 # 按列统计缺失值 df_obj df_obj.isnull().sum() 筛选掉缺失值 # object_name.dropna() # 要从包含缺失值的DataFrame中标识并删除缺失值所在的行,从DataFrame对象调用.dropna()方法即可。注意:如果要删除包含缺失值的列,传递axis = 1参数即可按列而不是按行进行删除。 # 删除韩缺失值的每一行(含一个就删) df_no_nan = df_obj.dropna() df_no_nan # 可以传参指定删除指定列 df_no_nan = df_obj.dropna(axis = 1) df_no_nan # object_name.dropna(how='all') # 要删除DataFrame中只包含缺失值的空行,从DataFrame对象调用.dropna()方法,然后传入how='all'参数即可。 # 整行都是缺失值的删除行 df_no_nan = df_obj.dropna(how = 'all') df_no_nan
    Processed: 0.016, SQL: 12