数据治理、数据清洗定义、区别以及数据清洗常用方法

一、数据治理定义

数据治理是一种组织数据管理的方法,涉及数据的收集、存储、处理、分析和共享等方面,旨在最大程度地利用数据资产并降低数据相关的风险。‌ 数据治理确保数据的质量、安全性、合规性和可用性,以支持组织的决策和运营活动。‌

二、数据清洗定义

数据清洗是数据治理工作中的一项重要任务,旨在解决企业的数据质量历史遗留问题,如数据不一致、不完整、不合规和冗余等。‌ 数据清洗通过设定特定的数据规则对混乱数据进行清洗和标准化。‌

三、数据治理和数据清洗的区别

数据治理主要是宏观上对数据进行管理,由国家或行业制定制度,具有稳定性。‌ 数据治理涉及顶层设定,具有权威性,确保数据的整体质量和合规性。而‌数据清洗主要是微观上对数据进行清洗和标准化,规则由自己设定,随意性较强。‌ 数据清洗更侧重于解决具体的数据质量问题。‌

四、数据清洗常用方法

1.数据质量问题一:数据中存在缺失值

下面以bbb.csv文件为例,介绍常用缺失值处理方法,该文件具体内容如下:
在这里插入图片描述

2.处理方法

(1)方法一:删除缺失值所在的行
def DelRowWithNull():
  data = pd.read_csv('bbb.csv')
  data.dropna(inplace=True)
  return data
(2)方法二:填补缺失值

1)使用缺失值所在列临近值填补

# 使用缺失值上一行有效值填补
def FillingNullWithUpRow():
  data = pd.read_csv('bbb.csv') 
  data.fillna(method='ffill',inplace=True)
  return data

# 使用缺失值下一行有效值填补
def FillingNullWithDownRow():
  data = pd.read_csv('bbb.csv') 
  data.fillna(method='bfill',inplace=True)
  return data

2)使用该列平均值对空值进行填补(缺失值所在列类型为数值型)

def FillingNullWithColMean():
  data = pd.read_csv('bbb.csv') 
  data.fillna(data.mean(),inplace=True)
  return data

3)使用空值列中位数进行填补(缺失值所在列类型为数值型)

def FillingNullWithMedian():
  data = pd.read_csv('bbb.csv')
  data.fillna(data.median(),inplace=True)
  return data

填补后的结果如下图:

4)使用空值所在列众数进行填补

def FillingNullWithMode():
  data = pd.read_csv('bbb.csv')
  data.fillna(data.mode().iloc[0], inplace=True)
  return data

填补后的结果如下图:
在这里插入图片描述

5) 自定义填充

def FillingNullWithCustom(data):
  data = pd.read_csv('bbb.csv')
  data.fillna('-1', inplace=True)
  return data

填补后的结果如下图所示:
在这里插入图片描述
6) 插值填充(缺失值必须为数值类型)

def FillingNullWithInsertVal(data):
  data = pd.read_csv('bbb.csv') 
  data.interpolate(method='linear', limit_direction='forward', inplace=True)
  return data

注释:method 参数可取值及对应解释:
linear:线性插补。
time:时间序列插补,适用于日期范围的数据。
index:基于索引的插补。
values:基于数据值的插补。
nearest:最接近邻居插补。
zero:零或者一个常数。
slinear:线性插补,用于离散数据。
quadratic:二次插补,用于离散数据。
cubic:三次插补,用于离散数据。

7)机器学习填充(缺失值必须为数值类型 或者 字符类型)
要使用该方法,必须确定缺失值所在列与其他某一列间存在某种联系。

3.问题二:存在重复值

在这里插入图片描述

4.处理方法

方法:删除重复记录
def DelDuplicateRow(data):
  data = pd.read_csv('bbb.csv')
  data = data.drop_duplicates()
  return data

在这里插入图片描述

5.问题三:存在异常值

例如:现有这样一个叫ccc.csv的文件,文件内容如下:
在这里插入图片描述

从上面表格文件中可以看出,age 年龄列,存在一个异常值为400,身高列存在一个异常值-10。

6.处理方法

方法1:检测异常值并剔除包含异常值的记录

具体逻辑如下:

import pandas as pd

def detect_outliers(series):
    Q1 = series.quantile(0.25)
    Q3 = series.quantile(0.75)
    IQR = Q3 - Q1
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    outliers = (series < lower_bound) | (series > upper_bound)
    return outliers

csv_file = 'ccc.csv'
# 1.读取ccc.csv文件
df = pd.read_csv(csv_file)
# 2.创建一个空的DataFrame来存储异常值标记
outlier_flags = pd.DataFrame(index=df.index, columns=df.columns, dtype=bool)

# 3.对每一列应用detect_outliers函数,并存储结果
for column in df.columns:
    outlier_flags[column] = detect_outliers(df[column])

# 4.找出至少在一个列中有异常值的行
any_outliers = outlier_flags.any(axis=1)

abn_rows_loc = []

# 5.打印有异常值的行和对应的列
for index, row in df[any_outliers].iterrows():
    outlier_columns = outlier_flags.loc[index].index[outlier_flags.loc[index]]
    print(f"Row {index} has outliers in columns: {', '.join(outlier_columns)}")
    abn_row_loc.append(index)
    print(row)
    print()

for i in abn_col_idx:
    df.drop([i], inplace=True)

print(df)

方法2:检测异常值并填补异常值

填补方法同数据填补策略一致。

React Hooks 是 React 16.8 中新增的特性,它可以让你在函数组件中使用 state、生命周期钩子等 React 特性。使用 Hooks 可以让你写出更简洁、可复用且易于测试的代码。 React Hooks 提供了一系列的 Hook 函数,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useImperativeHandle、useLayoutEffect 和 useDebugValue。每个 Hook 都有特定的用途,可以帮助你处理不同的问题。 下面是 React Hooks 的一些常用 Hook 函数: 1. useState useState 是最常用的 Hook 之一,它可以让你在函数组件中使用 state。useState 接受一个初始状态值,并返回一个数组,数组的第一个值是当前 state 值,第二个值是更新 state 值的函数。 ``` const [count, setCount] = useState(0); ``` 2. useEffect useEffect 可以让你在组件渲染后执行一些副作用操作,比如订阅事件、异步请求数据等。useEffect 接受两个参数,第一个参数是一个回调函数,第二个参数是一个数组,用于控制 useEffect 的执行时机。 ``` useEffect(() => { // 这里可以执行副作用操作 }, [dependencies]); ``` 3. useContext useContext 可以让你在组件树中获取 context 的值。它接受一个 context 对象,并返回该 context 的当前值。 ``` const value = useContext(MyContext); ``` 4. useRef useRef 可以让你在组件之间共享一个可变的引用。它返回一个对象,该对象的 current 属性可以存储任何值,并在组件的生命周期中保持不变。 ``` const ref = useRef(initialValue); ref.current = value; ``` 5. useCallback useCallback 可以让你缓存一个函数,以避免在每次渲染时都创建一个新的函数实例。它接受一个回调函数和一个依赖数组,并返回一个 memoized 的回调函数。 ``` const memoizedCallback = useCallback(() => { // 这里是回调函数的逻辑 }, [dependencies]); ``` 6. useMemo useMemo 可以让你缓存一个计算结果,以避免在每次渲染时都重新计算。它接受一个计算函数和一个依赖数组,并返回一个 memoized 的计算结果。 ``` const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); ``` 以上就是 React Hooks 的一些常用 Hook 函数,它们可以帮助你更好地处理组件状态、副作用、上下文和性能优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值