数据清洗、数据标注、数据可视化

数据清洗

数据清洗是数据分析过程中至关重要的一步。主要任务包括:

  1. 缺失值处理

    • 删除:删除包含缺失值的记录。
    • 填充:使用均值、中位数、众数、插值等方法填充缺失值。
    • 预测:使用机器学习模型预测缺失值。
  2. 异常值处理

    • 检测:使用统计学方法(如标准差法、箱线图)或机器学习方法(如孤立森林算法)检测异常值。
    • 处理:根据业务需求选择保留、修正或删除异常值。
  3. 数据标准化

    • 编码转换:将分类变量转换为数值型变量(如独热编码)。
    • 缩放:将数值型变量缩放到同一尺度(如标准化、归一化)。
  4. 重复值处理

    • 检测和删除:删除重复记录,保留一条。
  5. 数据一致性

    • 格式统一:确保日期、时间、货币等字段的格式一致。

数据标注

数据标注是为了给机器学习模型提供有标签的数据集。主要任务包括:

  1. 标签定义

    • 确定要标注的标签类型(如分类标签、回归值)。
  2. 标注工具

    • 使用标注工具(如Labelbox、LabelImg)进行手动标注。
  3. 标注质量控制

    • 互审:多个人交叉检查标注结果。
    • 一致性检验:计算Cohen’s Kappa等一致性指标,评估标注一致性。

数据分析

数据分析是对数据进行深入理解和探索的过程。主要任务包括:

  1. 描述性统计分析

    • 计算均值、中位数、标准差、分位数等基本统计量。
  2. 数据可视化分析

    • 绘制直方图、箱线图、散点图、折线图等可视化图表。
  3. 假设检验

    • 使用t检验、卡方检验等方法验证假设。
  4. 相关性分析

    • 计算变量之间的相关系数,分析变量间的关系。
  5. 模型分析

    • 构建机器学习模型,进行预测和分类,评估模型效果(如准确率、召回率、F1分数)。

数据可视化

数据可视化是将数据分析结果以图形的方式展示出来,主要任务包括:

  1. 选择合适的图表

    • 根据数据类型和分析目标选择适合的图表(如条形图、饼图、散点图)。
  2. 使用可视化工具

    • 使用工具(如Matplotlib、Seaborn、Tableau、Power BI)进行数据可视化。
  3. 设计交互式图表

    • 使用Dash、Plotly等工具创建交互式数据可视化仪表板。
  4. 图表美化

    • 添加图例、标题、标签,调整颜色、样式等,使图表更具可读性和美观性。

实践步骤

  1. 数据收集和理解

    • 获取数据集,理解数据的结构和含义。
  2. 数据清洗和预处理

    • 进行数据清洗,处理缺失值、异常值、重复值等。
  3. 数据标注

    • 对数据进行手动或自动标注,确保标注质量。
  4. 探索性数据分析(EDA)

    • 进行描述性统计分析和可视化,发现数据中的模式和规律。
  5. 构建和评估模型

    • 使用机器学习算法构建模型,进行预测或分类,评估模型效果。
  6. 数据可视化和报告

    • 将分析结果以图表的形式展示,编写分析报告。

通过这些步骤,你可以全面掌握数据清洗、标注,数据分析和数据可视化的流程,为应聘相关岗位做好准备。

1.数据清洗

数据读入与描述

import pandas as pd
import numpy as np

data=pd.read_excel("E:\谷歌浏览器下载的文件\参考文献\利润表.xlsx")
data.shape#显示Size
data.info()#显示列明和数据数量

data['B001300000'].describe()#偏向统计学一些的描述

大小写和空格

在这里插入图片描述

# 去除字符串两端的空格
data['Column1'] = data['Column1'].str.strip()
# 使用正则表达式替换连续的空格为一个空格
data['Column1'] = data['Column1'].str.replace(r'\s+', ' ')

# 将字符串转换为小写字母
data['Column1'] = data['Column1'].str.lower()

数据去重

duplicated_rows = data[data.duplicated()]

# 打印重复的行
print("重复的行:")
print(duplicated_rows)
#去重
data_no_duplicates = data.drop_duplicates()

缺失值(方法不同,放一个自己用过的线性插值完整代码)

在这里插入图片描述

df = pd.read_excel('E:\谷歌浏览器下载的文件\参考文献\Yinzi.xlsx')
# 对整个 DataFrame 进行线性插值
df_interpolated = df.interpolate(method='linear', axis=0)
df_interpolated.to_excel('E:\谷歌浏览器下载的文件\参考文献\merged_d123ta.xlsx', index=False)
# 检查是否存在缺失值
missing_values = df_interpolated.isnull().sum()

# 打印每列的缺失值数量
print(missing_values)

异常值(方法不同,放个5倍标准差)

最后一行-不处理,而是着重研究

# 读取表格数据
df = pd.read_excel('E:\谷歌浏览器下载的文件\参考文献\Yinzi.xlsx')
# 除了股票代码Symbol和TradingDate,其余的数值列
numeric_columns = df.columns.difference(['Symbol', 'TradingDate','ShortName_x','BuySymbol'])
# 根据股票代码分组,计算每个股票每项数据的标准差
std_deviation = df.groupby('Symbol')[numeric_columns].transform('std')
# 定义异常值的阈值,这里设定为5倍标准差
threshold = 5 * std_deviation
# 计算每个数据点与其所在股票的平均值的差异
deviation = df[numeric_columns] - df.groupby('Symbol')[numeric_columns].transform('mean')
# 找到大于或小于阈值的异常值
outliers = (deviation.abs() > threshold)
# 输出异常值所在行
print(df[outliers.any(axis=1)])
df_no_outliers = df[~outliers.any(axis=1)]#这句话后面有解释

# 保存新的文件
df_no_outliers.to_excel('E:\谷歌浏览器下载的文件\参考文献\your_new_excel_file_without_outliers.xlsx', index=False)

在这里插入图片描述

标准化(方法不同,放个Z-score)

import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from scipy.stats import boxcox

# 读取金融股票数据,假设数据已经存储在一个名为 'stock_data.csv' 的文件中
df = pd.read_excel('E:\谷歌浏览器下载的文件\参考文献\merged_d12s3ta.xlsx')

df = df.fillna(df.mean())#用 DataFrame 中所有列的均值来填充缺失值
# 排除 'Symbol' 和 'TradingDate' 列
exclude_columns = ['Symbol', 'TradingDate' ,'ShortName_x','SecurityID_x','BuySymbol','LimitStatus']
numeric_columns = df.select_dtypes(include=['float64', 'int64']).columns
features_to_standardize = [col for col in numeric_columns if col not in exclude_columns]
# Z-score 标准化
min_max_scaler = MinMaxScaler()
df[features_to_standardize] = min_max_scaler.fit_transform(df[features_to_standardize])
# 保存标准化后的数据
df.to_excel('E:/谷歌浏览器下载的文件/参考文献/ndata.xlsx', index=False)

还有关于评分的标准化,例如4.35->4.3这样的,可以用正则表达式实现,比较麻烦,学了忘。

2.数据标注

网上找不到类似教程(全部是AI数据标注的工作内容),问问GPT吧

# 根据条件标注数据
import pandas as pd

# 读取数据
data = pd.read_csv('data.csv')

# 根据条件创建标签列
data['label'] = 0  # 初始化标签列

# 示例:根据某列的数值大小进行标注
data.loc[data['column_name'] > 100, 'label'] = 1  # 设置条件,将大于100的数据标记为1

# 打印标注后的数据
print(data)

# 保存标注后的数据
data.to_csv('labeled_data.csv', index=False)

啊这,它也只能给出简单的例子

3.数据可视化

Matlab会更好(也许吧,之前去的"公司"就是matlab做的图),但我不大会。放段Python的吧。这玩意和标注一样得看具体工作需求

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker#主要适用于防止坐标轴使用科学计数法

# 读取 Excel 数据
data = pd.read_excel("E:\\谷歌浏览器下载的文件\\参考文献\\利润表.xlsx")

# 删除第一行以及第二、第三行的数据
data = data.drop([0, 1, 2])

# 只绘制前 50 行的数据
sdata = data.head(50)

# 确保数据列 B001000000 是数值类型,很关键
sdata['B001000000'] = pd.to_numeric(sdata['B001000000'], errors='coerce')
#接下来绘图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
# 绘制折线图
plt.figure(figsize=(10, 6))#创建一个宽度为 10 英寸、高度为 6 英寸的折线图
plt.plot(sdata.index, sdata['B001000000'], marker='o', linestyle='-', color='b')

# 添加标签和标题
plt.xlabel('Index')
plt.ylabel('B001000000')
plt.title('金融数据可视化')

# 添加网格线
plt.grid(True)

# 设置 y 轴的刻度格式以显示实际的数值
plt.gca().yaxis.set_major_formatter(mticker.FuncFormatter(lambda x, _: f'{x:,.0f}'))
#↑↑↑f'{x:,.0f}' 格式化字符串确保数字以逗号分隔的形式显示,不包含小数部分

# 显示图例
plt.legend(['B001000000'], loc='upper left')#意思是图放在左上方

# 保存图表
plt.savefig('financial_data_plot.png')

# 显示图表
plt.show()

在这里插入图片描述

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值