门户网站建设与管理办法,2345网址导航浏览器,在线代理浏览国外网站,软件开发框架有哪些使用脚本清洗数据时#xff0c;可以根据具体的数据问题选择编程语言#xff0c;如Shell、Python、SQL等。这里我以 Python#xff08;Pandas库#xff09; 和 SQL 为例#xff0c;演示如何通过脚本进行数据清洗。
1. 使用 Python#xff08;Pandas库#xff09; 进行数…使用脚本清洗数据时可以根据具体的数据问题选择编程语言如Shell、Python、SQL等。这里我以 PythonPandas库 和 SQL 为例演示如何通过脚本进行数据清洗。
1. 使用 PythonPandas库 进行数据清洗
Python 的 pandas 库非常适合处理大规模数据清洗任务以下是一些常见的数据清洗操作
1.1 处理缺失值 python
复制代码
import pandas as pd # 读取数据可以是CSV、Excel等格式 df pd.read_csv(data.csv) # 查看缺失值 print(df.isnull().sum()) # 方法1: 删除包含缺失值的行 df_cleaned df.dropna() # 方法2: 使用均值或其他方式填充缺失值 df[age] df[age].fillna(df[age].mean()) # 用均值填充年龄缺失值 df[city] df[city].fillna(Unknown) # 用Unknown填充城市缺失值 # 保存清洗后的数据 df_cleaned.to_csv(cleaned_data.csv, indexFalse)
1.2 处理重复数据 python
复制代码
# 查看重复数据 print(df.duplicated()) # 删除重复行 df_cleaned df.drop_duplicates() # 保留最新的数据行删除重复的记录 df_cleaned df.drop_duplicates(subsetcustomer_id, keeplast)
1.3 格式不一致的清洗 python
复制代码
# 将所有字符串字段转换为小写 df[name] df[name].str.lower() # 日期格式统一转换 df[date] pd.to_datetime(df[date], format%Y-%m-%d) # 去除前后空格 df[address] df[address].str.strip()
1.4 处理异常值 python
复制代码
# 查看统计信息以识别异常值 print(df.describe()) # 方法1: 删除明显的异常值如年龄不可能为300 df_cleaned df[(df[age] 0) (df[age] 120)] # 方法2: 用中位数替换异常值 median_age df[age].median() df[age] df[age].apply(lambda x: median_age if x 120 else x) # 方法3: 标记异常值不删除 df[age_outlier] df[age].apply(lambda x: 1 if x 120 else 0)
1.5 数据格式转换 python
复制代码
# 将货币格式转换为数值 df[price] df[price].replace({\$: , ,: }, regexTrue).astype(float)
2. 使用 SQL 进行数据清洗
SQL适用于在数据库中直接进行数据清洗操作以下是一些常见的SQL清洗操作。
2.1 处理缺失值 sql
复制代码
-- 删除缺失值所在的行 DELETE FROM orders WHERE customer_name IS NULL; -- 使用默认值填充缺失字段 UPDATE customers SET city Unknown WHERE city IS NULL; -- 使用均值填充数值字段的缺失值 UPDATE customers SET age (SELECT AVG(age) FROM customers) WHERE age IS NULL;
2.2 处理重复数据 sql
复制代码
-- 删除重复行 DELETE FROM customers WHERE customer_id IN ( SELECT customer_id FROM customers GROUP BY customer_id HAVING COUNT(customer_id) 1 ); -- 删除特定列重复的数据保留最新记录 WITH RankedCustomers AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY last_update DESC) AS rn FROM customers ) DELETE FROM RankedCustomers WHERE rn 1;
2.3 格式不一致的清洗 sql
复制代码
-- 将名字字段中的所有字符转换为小写 UPDATE customers SET name LOWER(name); -- 格式化日期字段 UPDATE orders SET order_date TO_DATE(order_date, YYYY-MM-DD) WHERE order_date IS NOT NULL;
2.4 处理异常值 sql
复制代码
-- 删除异常值如年龄大于120岁 DELETE FROM customers WHERE age 120; -- 用中位数替换异常值 WITH MedianAge AS ( SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY age) AS median_age FROM customers ) UPDATE customers SET age (SELECT median_age FROM MedianAge) WHERE age 120;
2.5 数据格式转换 sql
复制代码
-- 转换货币格式将字符串中的货币符号移除并转为数字 UPDATE products SET price CAST(REPLACE(REPLACE(price, $, ), ,, ) AS DECIMAL);
3. 使用 Shell 脚本 进行简单数据清洗
Shell 脚本适合处理文件级别的简单数据清洗操作例如清洗 CSV 文件中的数据。
3.1 清理CSV文件中的空行 bash
复制代码
# 删除空行并输出到新文件 sed /^$/d data.csv cleaned_data.csv
3.2 批量替换文本 bash
复制代码
# 将所有的 NULL 替换为 Unknown sed s/NULL/Unknown/g data.csv cleaned_data.csv
3.3 删除重复行 bash
复制代码
# 删除文件中的重复行 sort data.csv | uniq cleaned_data.csv
总结
使用脚本进行数据清洗的选择取决于具体的数据问题和工作环境
PythonPandas 非常适合处理复杂的大数据集和数据分析。SQL 更适合在数据库中直接操作数据尤其是结构化数据的清洗。Shell 脚本 适用于文本文件级别的批量处理和清理。