作者: murkey

  • 使用**Microsoft Excel** 来完成电商用户数据的清洗步骤

    第一步:准备数据

    1. 打开 Excel。
    2. 将模拟的“脏”数据复制粘贴到工作表中,确保第一行是列标题(user_id, name, email, signup_date, last_login, total_spent, membership, device, city)。
    3. 选中整个数据区域(包括标题),点击 “开始” 选项卡 -> “格式刷”“套用表格格式” -> 选择一个样式,将其转换为 “表格”(推荐)。这会启用筛选器并方便后续操作。

    第二步:数据清洗的核心步骤

    1. 处理缺失值 (Missing Values)

    • 查找缺失值

      • 选中任意单元格,点击 “开始” -> “查找和选择” -> “定位条件” -> 选择 “空值”。Excel 会高亮显示所有空白单元格。
      • 或者,使用筛选器:点击列标题的下拉箭头,取消勾选 “(空白)”,即可看到哪些行有缺失。
    • 填充缺失值

      • 数值型(如 total_spent
        1. 选中 total_spent 列的所有数据单元格(不包括标题)。
        2. 点击 “开始” -> “查找和选择” -> “定位条件” -> “空值”。此时只有 total_spent 的空白单元格被选中。
        3. 直接输入你想填充的值(例如 0100),然后按 Ctrl + Enter。这会将所有选中的空白单元格都填充为该值。
        4. (计算中位数稍复杂):先在空白单元格(如 J1)用 =MEDIAN(E2:E12) 计算中位数,然后复制这个值,再用上述方法粘贴到 total_spent 的空白单元格。
      • 分类型(如 name
        1. 同样选中 name 列的数据区域,定位到空值。
        2. 输入 Unknown,然后按 Ctrl + Enter

    2. 处理重复数据 (Duplicate Data)

    • 查找重复行

      1. 选中整个数据区域(或整个表格)。
      2. 点击 “开始” 选项卡 -> “条件格式” -> “突出显示单元格规则” -> “重复值”
      3. 在弹出的对话框中,可以选择颜色来高亮显示所有重复的值(默认基于所有列判断)。
    • 删除重复行

      1. 选中整个数据区域(或点击表格内任意单元格)。
      2. 点击 “数据” 选项卡 -> “删除重复项”
      3. 在弹出的对话框中:
        • 确保勾选了所有你认为能唯一标识一行的列(通常勾选所有列,或者只勾选 user_idemail 这种唯一标识)。
        • 点击 “确定”
      4. Excel 会删除重复的行,并弹出对话框告诉你删除了多少个重复值,保留了多少个唯一值。

    3. 处理不一致的数据格式 (Inconsistent Formatting)

    • 统一文本大小写

      • 小写:在 device 列旁边新建一列(如 device_clean),在第一个数据行(如 I2)输入公式 =LOWER(H2),然后双击填充柄(单元格右下角的小方块)向下填充整个列。最后,可以复制这一列,右键选择性粘贴为“值”,覆盖原 device 列,然后删除辅助列。
      • 大写:使用 =UPPER(H2)
      • 首字母大写:使用 =PROPER(G2)(例如处理 name 列)。
    • 处理空字符串

      • 选中 city 列的数据区域。
      • Ctrl + H 打开“查找和替换”。
      • 在“查找内容”中输入 "" (两个双引号,代表空字符串),在“替换为”中留空或输入 Unknown
      • 点击 “全部替换”。如果替换为 Unknown,则完成了填充;如果替换为空,则变成了空白单元格,再用第1步的方法填充。

    4. 处理异常值和错误数据 (Outliers & Errors)

    • 处理错误的日期 (signup_date)

      1. 选中 signup_date 列的数据区域。
      2. 点击 “数据” 选项卡 -> “数据验证” -> “数据验证”
      3. 在“设置”选项卡中,“允许”选择“日期”,可以设置开始和结束日期范围。
      4. 切换到“出错警告”选项卡,输入标题和错误信息(如“请输入有效日期”)。
      5. 点击“确定”。这可以防止未来输入错误日期。
      6. 修正现有错误:找到 invalid_date 单元格,手动将其改为一个有效日期(如 2023-03-01),或者留空然后用“填充缺失值”的方法处理。
    • 检查数值型异常值

      1. 选中 total_spent 列。
      2. 点击 “开始” -> “条件格式” -> “项目选取规则” -> “其他规则”
      3. 可以选择“格式化排名靠前或靠后的值”,例如“低于平均值”或“高于平均值的1.5倍标准差”等,用颜色标出可能的异常值。
      4. 手动检查并修正或删除这些行。

    5. 数据类型转换 (Type Conversion)

    • Excel 通常是自动识别的。如果日期显示为文本:
      1. 选中日期列。
      2. 点击 “数据” 选项卡 -> “分列”
      3. 在向导中,点击“下一步”两次,到第三步,选择“日期”格式(如 YMD),点击“完成”。
    • 如果数值显示为文本(左上角有绿色三角),选中区域,点击出现的黄色感叹号,选择“转换为数字”。

    6. 处理不一致的分类数据

    • 使用 “查找和替换” (Ctrl + H):
      • “查找内容”输入错误的类别(如 Platnum)。
      • “替换为”输入正确的类别(如 Platinum)。
      • 点击“全部替换”。
    • 或者,使用 IF 函数VLOOKUP 函数 在新列中进行映射和修正。

    第三步:最终检查与保存

    1. 最终检查

      • 再次使用“条件格式”检查是否有重复值。
      • 使用“筛选器”检查每列是否有空白或异常值。
      • 查看“数据透视表”快速汇总统计(可选)。
    2. 保存数据

      • 点击 “文件” -> “另存为”
      • 选择一个新文件名(如 cleaned_user_data.xlsx),避免覆盖原始数据。
      • 选择文件格式(.xlsx 是默认的 Excel 格式)。

    总结:Excel 数据清洗的核心功能

    清洗任务 Excel 核心功能/方法
    查看数据 筛选器、排序、条件格式、状态栏统计(求和、计数)
    处理缺失值 “定位条件” -> “空值”、手动填充、IF(ISBLANK(), new_value, original)
    处理重复值 “条件格式” -> “重复值”、“数据” -> “删除重复项”
    文本处理 UPPER(), LOWER(), PROPER(), TRIM() (去空格), SUBSTITUTE()
    数据类型转换 “分列”向导、设置单元格格式、VALUE() 函数
    替换值 “查找和替换” (Ctrl + H)、REPLACE() 函数
    条件筛选 筛选器、高级筛选
    保存数据 “文件” -> “另存为”

    关键提示

    • 使用表格 (Table):将数据区域转换为“表格”(Ctrl + T)是最佳实践,它自带筛选、结构化引用和自动填充。
    • 备份原始数据:在原始文件上操作前,务必先复制一份进行清洗。
    • 使用辅助列:复杂的清洗(如文本处理、条件判断)通常需要在旁边新建辅助列进行计算,完成后复制为“值”并删除原列。
    • 函数是关键:掌握 IF, ISBLANK, TRIM, UPPER/LOWER, VLOOKUP/XLOOKUP 等函数能极大提升效率。

    通过熟练运用这些 Excel 功能,即使没有编程基础,也能高效地完成绝大多数数据清洗任务。

  • MARKDOWN格式基本语法

    以下是 Markdown 格式编写文章的常用语法总结,涵盖基础和扩展功能:


    1. 标题

    使用 # 符号定义标题,# 的数量表示标题级别(最多六级)。

    # 一级标题
    ## 二级标题
    ### 三级标题
    #### 四级标题
    ##### 五级标题
    ###### 六级标题

    2. 段落与换行

    • 段落:直接编写文字即可,段落之间用空行分隔。
    • 换行:在行尾添加两个空格 + 回车,或使用 <br> 标签。
      
      这是第一段。
      这是第二段。

    第一行
    第二行
    第三行

    
    ---
    
    ### **3. 强调与格式**
    - **斜体**:`*斜体*` 或 `_斜体_`
    - **粗体**:`**粗体**` 或 `__粗体__`
    - **斜体+粗体**:`***粗斜体***` 或 `___粗斜体___`
    - **删除线**:`~~删除线~~`
    - **下划线**:`
    <u>下划线</u>`
    - **高亮**:`==高亮==`(部分编辑器支持)
    ```markdown
    *斜体文本*  
    **粗体文本**  
    ***粗斜体文本***  
    ~~删除线文本~~  
    
    <u>下划线文本</u>  
    ==高亮文本==

    4. 列表

    无序列表

    使用 *+- 作为标记:

    * 项目1
    + 项目2
    - 项目3

    有序列表

    使用数字加英文句点:

    1. 第一项
    2. 第二项
    3. 第三项

    嵌套列表

    通过缩进实现嵌套:

    1. 父项
       - 子项1
       - 子项2
    2. 父项2
       + 子项3
       + 子项4

    5. 链接与图片

    链接

    • 行内链接[文字](URL "可选提示")
    • 引用式链接[文字][id] + [id]: URL
      [百度](https://baidu.com)  
      [Google][1]  

    图片

    • 带链接的图片![替代文字](图片URL "提示")
    • 带链接的图片嵌套[![替代文字](图片URL)](链接URL)
      ![Markdown](https://example.com/markdown.png)  
      [![Markdown](https://example.com/markdown.png)](https://example.com)

    6. 代码

    行内代码

    使用单个反引号包裹:

    使用 `print("Hello")` 输出内容。

    代码块

    使用三个反引号包裹,并指定语言(高亮语法):

    ```python
    def hello():
        print("Hello, Markdown!")
    
    ---
    
    ### **7. 分隔线**
    使用三个或以上连续的 `*`、`-` 或 `_`:
    ```markdown
    ***
    ---
    ___

    8. 引用

    使用 > 符号:

    > 这是一个引用块。
    > 可以嵌套:
    >> 二级引用。

    9. 表格

    使用竖线 | 和破折号 - 定义表头与分隔线:

    | 姓名   | 年龄 | 城市     |
    |--------|------|----------|
    | 张三   | 25   | 北京     |
    | 李四   | 30   | 上海     |

    10. 脚注与注释

    脚注

    使用 [^id] 标记,并在文末定义:

    这是一个脚注示例[^1]。
    
    [^1]: 脚注内容。

    注释

    使用 HTML 标签或部分编辑器支持的特殊语法:

    <注释内容> 或 [注释](url)

    11. 任务列表

    使用 - [ ] 表示未选中,- [x] 表示选中:

    - [x] 完成任务1
    - [ ] 任务2待办
    - [x] 任务3已完成

    12. 数学公式

    使用 LaTeX 语法,包裹在 $$$ 中:

    行内公式:$E = mc^2$  
    独立公式:
    $$
    \int_{a}^{b} x^2 dx
    $$

    13. 扩展功能

    • 自动链接:直接输入 URL 或邮箱,会自动转为链接:
      http://example.com  
      user@example.com
    • HTML 元素:可直接插入 HTML 标签(如 `
      `、``)。
    • 目录生成:使用 @[TOC][TOC](需编辑器支持)。

    14. 实用技巧

    • 快捷键:不同编辑器支持快捷键(如 VS Code:Ctrl/Cmd + B 加粗,Ctrl/Cmd + I 斜体)。
    • 兼容性:避免过度依赖 HTML 或扩展语法,确保基础语法在大多数平台通用。
    • 预览模式:使用编辑器的实时预览功能检查效果。

    通过掌握以上语法,你可以高效地用 Markdown 编写结构清晰、格式规范的文档!

  • Docker compose部署完整实例

    基于Debian系统;使用librespeed作为部署对象。

    • Docker安装
    $ curl -fsSL https://get.docker.com -o install-docker.sh
    $ sudo sh install-docker.sh
    • 部署librespeed

    在没有lookingglass的服务器上可以部署libre用来测试服务器的网络情况,是一种非常直观的方式。

    1. 创建数据目录
      • mkdir -p /data/speedtest-x && cd /data/speedtest-x/
    2. 编辑compose文件
      • nano docker-compose.yaml
        • version: '3.9' services: speedtest-x: image: badapple9/speedtest-x tty: true stdin_open: true ports: - '9001:80' restart: always container_name: speedtest-x
    3. 创建容器
      • docker compose up -d
      • 访问librespeed网页,默认端口号为9001