Pandas异常值处理小结
作者:起名字真难.
在Pandas中,异常值(或称为离群值)是数据中那些与其他数据点显著不同的点。这些异常值可能是由于错误、异常事件或数据的自然变异产生的。处理异常值的方法取决于数据的性质、分析的目的以及异常值对分析的影响。
在异常值处理的时候可能会用到的函数
①、describe():查看每一列的描述性统计量
②、df.info():查看数据信息
③、df.std():可以求得DataFrame对象每一列的标准差
④、df.drop():删除特定索引
⑤、unique():唯一,去重
⑥、query():按条件查询
⑦、df.sort_values():根据值排序
⑧、sort_index():根据索引排序...
1、describe()
describe()
函数在 Pandas 中是一个用于生成 DataFrame 或 Series 中数值列统计摘要的便捷方法。它提供了丰富的描述性统计信息,帮助用户快速了解数据的分布情况。可以利用.T转置。
默认参数下的输出
默认情况下,describe()
函数会计算以下统计量(对于数值型列):
- count:非缺失值的数量。
- mean:均值。
- std:标准差。
- min:最小值。
- 25%:第一四分位数(或称为25%分位数)。
- 50%:第二四分位数(中位数)。
- 75%:第三四分位数。
- max:最大值。
import pandas as pd data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c']) print(a.describe())
2、std
DataFrame.std()
方法可以用来计算DataFrame对象每一列的标准差(standard deviation)。默认情况下,这个方法会忽略NaN值,只计算非空值的标准差。
import pandas as pd # 创建一个简单的DataFrame data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 20, 50], 'C': [pd.np.nan, 2, 4, 4, 6] # 包含NaN值 } df = pd.DataFrame(data) # 计算每一列的标准差 std_values = df.std() print(std_values)
3、drop
在Pandas中,DataFrame.drop()
方法用于删除行或列。这个方法非常有用,特别是当你需要清理数据或去除某些不需要的行/列时。
方法签名
DataFrame.drop(labels=None, axis=0, index=None, columns=None, inplace=False, level=None, errors='raise')
参数说明
labels
:要删除的行或列的标签。axis
:指定删除行(axis=0
或axis='index'
)还是列(axis=1
或axis='columns'
)。index
和columns
:这些是labels
的别名,用于分别指定要删除的行和列。但是,通常建议直接使用labels
和axis
。inplace
:如果为True,则在原始DataFrame上进行修改并返回None。否则,返回一个新的DataFrame。level
:对于具有多级索引的DataFrame,指定要删除的级别。errors
:指定如何处理错误。默认为 'raise',表示出现错误时抛出异常。如果设置为 'ignore',则忽略错误。
import pandas as pd data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c']) print(a.drop('a')) # 默认的情况下删除一行 print(a.drop(0, axis=1)) # 删除一列
4、unique()
在Pandas中,unique()
是一个常用的方法,它主要用于获取Series对象列的唯一值(unique values)。这个方法返回一个NumPy数组,其中包含Series的唯一值。DataFrame没有unidue。
import pandas as pd data = [[4, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c']) print(a[0].unique())
5、query()
在Pandas库中,query()
方法是DataFrame对象的一个功能强大的工具,用于根据特定的条件筛选和查询数据。以下是关于 query()
方法的详细解释:
1. 功能概述
query()
方法允许用户根据逻辑表达式(可以是单个条件或组合条件)来筛选DataFrame中的数据。- 它返回一个新的DataFrame,其中仅包含满足给定条件的数据行。
- 与
loc
和iloc
相比,query()
方法提供了更直观、类似于SQL的语法,使得筛选条件更易读、易写。
2. 语法结构
DataFrame.query(expr, inplace=False, **kwargs)
expr
: 表示查询条件的字符串。inplace
: 默认为False,表示不修改原始DataFrame,而是返回一个新的DataFrame。如果设置为True,则直接在原始DataFrame上进行修改。**kwargs
: 其他关键字参数,通常与eval()
方法的参数相关。
import pandas as pd data = [[4, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c'], columns=list("ABC")) print(a.query(' A== 4')) # 把A == 4筛选出来 n = 4 print(a.query('A == @n')) # 这里写一个@ 在能说明n为标量 # 这里的“ ” 里面可以有and or in ...
3. 注意事项
query()
方法只能用于筛选行,不能用于筛选列。- 查询条件字符串中的列名必须与DataFrame中的列名完全匹配(包括大小写)。
- 在使用变量时,请确保变量在调用
query()
方法之前已经被定义并赋值。 - 当使用复杂的查询条件时,建议使用括号来明确运算符的优先级,以避免潜在的错误。
6、df.sort_values()
在Pandas库中,DataFrame.sort_values()
方法是用于对DataFrame中的数据按照一个或多个列的值进行排序的。这个方法非常有用,特别是当你需要按照某个或某些列的值对数据进行排序以便进一步分析或可视化时。
方法签名
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
参数说明
by
: 需要依据其值进行排序的列名或列名列表。axis
: 排序的轴。0
或'index'
表示沿着行进行排序(即按列的值排序),1
或'columns'
表示沿着列进行排序(DataFrame中不支持按列排序,因此这个参数通常设置为0或'index')。ascending
: 排序方向,默认为True(升序),如果为False则为降序。inplace
: 是否在原地进行修改,默认为False(返回新的DataFrame),如果为True则直接在原DataFrame上进行修改。kind
: 排序算法的类型,默认为'quicksort'。对于大型数据集,'mergesort'和'heapsort'可能更为合适。na_position
: 缺失值(NaN)的位置,默认为'last'(在末尾),如果为'first'则在开头。ignore_index
: 重新设置结果的索引,默认为False。如果为True,则结果索引将会是整数型的默认索引。key
: 应用于每一列元素在进行比较之前的函数。
import pandas as pd data = [[9, 2, 3], [4, 5, 6], [1, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c'], columns=list("ABC")) print(a.sort_values('A')) # 默认的是升序 print(a.sort_values('A', ascending=False)) # 通过修改ascending=False 变为降序 print(a.sort_values('a', axis=1))
7、sort_index()
sort_index()
是 Pandas 库中 DataFrame 和 Series 对象的一个方法,用于根据索引值对数据进行排序。以下是关于 sort_index()
方法的详细解释:
方法功能
sort_index()
主要用于对 DataFrame 或 Series 对象进行索引排序。- 默认情况下,它会根据索引的升序(ascending=True)进行排.
方法签名
DataFrame.sort_index(*, axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)
参数说明
axis:
- 默认为 0,表示按行索引(index)进行排序。
- 如果设置为 1 或 'columns',则按列索引(columns)进行排序(但实际应用中按列索引排序的情况较少)。
level:
- 当索引是多重索引时,可以指定按哪一个或多个级别进行排序。
- 默认为 None,表示按多重索引的第一个级别排序。
ascending:
- 排序顺序,默认为 True,表示升序排序。
- 如果设置为 False,则进行降序排序。
inplace:
- 是否直接在原对象上进行修改,默认为 False。
- 如果设置为 True,则直接在原 DataFrame 或 Series 上进行排序,不返回新的对象。
kind:
- 排序算法的种类,默认为 'quicksort'。
- 对于大型数据集,可以选择其他算法,如 'mergesort'。
na_position:
- 缺失值(NaN)的位置,默认为 'last',表示将 NaN 值放在最后。
- 如果设置为 'first',则将 NaN 值放在前面。
sort_remaining:
- 当对多重索引的特定级别进行排序时,此参数控制是否对非指定级别进行排序。
- 默认为 True。
ignore_index:
- 当对多重索引进行排序时,此参数控制是否重置排序后的索引。
- 默认为 False,即保留多重索引。
key:
- 应用于索引值进行排序前的函数。
import pandas as pd data = [[9, 2, 3], [4, 5, 6], [1, 8, 9]] a = pd.DataFrame(data, index=['d', 'b', 'c'], columns=list("DBC")) print(a.sort_index()) # 按照行索引排序 print(a.sort_index(axis=1)) # 按照列索引进行排序 li = [1, 2, 3] b = pd.Series(li, index=['c', 'b', 'a']) print(b.sort_index())
到此这篇关于Pandas异常值处理小结的文章就介绍到这了,更多相关Pandas异常值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!