数据清洗
数据清洗是数据分析过程中至关重要的一步。主要任务包括:
-
缺失值处理:
- 删除:删除包含缺失值的记录。
- 填充:使用均值、中位数、众数、插值等方法填充缺失值。
- 预测:使用机器学习模型预测缺失值。
-
异常值处理:
- 检测:使用统计学方法(如标准差法、箱线图)或机器学习方法(如孤立森林算法)检测异常值。
- 处理:根据业务需求选择保留、修正或删除异常值。
-
数据标准化:
- 编码转换:将分类变量转换为数值型变量(如独热编码)。
- 缩放:将数值型变量缩放到同一尺度(如标准化、归一化)。
-
重复值处理:
- 检测和删除:删除重复记录,保留一条。
-
数据一致性:
- 格式统一:确保日期、时间、货币等字段的格式一致。
数据标注
数据标注是为了给机器学习模型提供有标签的数据集。主要任务包括:
-
标签定义:
- 确定要标注的标签类型(如分类标签、回归值)。
-
标注工具:
- 使用标注工具(如Labelbox、LabelImg)进行手动标注。
-
标注质量控制:
- 互审:多个人交叉检查标注结果。
- 一致性检验:计算Cohen’s Kappa等一致性指标,评估标注一致性。
数据分析
数据分析是对数据进行深入理解和探索的过程。主要任务包括:
-
描述性统计分析:
- 计算均值、中位数、标准差、分位数等基本统计量。
-
数据可视化分析:
- 绘制直方图、箱线图、散点图、折线图等可视化图表。
-
假设检验:
- 使用t检验、卡方检验等方法验证假设。
-
相关性分析:
- 计算变量之间的相关系数,分析变量间的关系。
-
模型分析:
- 构建机器学习模型,进行预测和分类,评估模型效果(如准确率、召回率、F1分数)。
数据可视化
数据可视化是将数据分析结果以图形的方式展示出来,主要任务包括:
-
选择合适的图表:
- 根据数据类型和分析目标选择适合的图表(如条形图、饼图、散点图)。
-
使用可视化工具:
- 使用工具(如Matplotlib、Seaborn、Tableau、Power BI)进行数据可视化。
-
设计交互式图表:
- 使用Dash、Plotly等工具创建交互式数据可视化仪表板。
-
图表美化:
- 添加图例、标题、标签,调整颜色、样式等,使图表更具可读性和美观性。
实践步骤
-
数据收集和理解:
- 获取数据集,理解数据的结构和含义。
-
数据清洗和预处理:
- 进行数据清洗,处理缺失值、异常值、重复值等。
-
数据标注:
- 对数据进行手动或自动标注,确保标注质量。
-
探索性数据分析(EDA):
- 进行描述性统计分析和可视化,发现数据中的模式和规律。
-
构建和评估模型:
- 使用机器学习算法构建模型,进行预测或分类,评估模型效果。
-
数据可视化和报告:
- 将分析结果以图表的形式展示,编写分析报告。
通过这些步骤,你可以全面掌握数据清洗、标注,数据分析和数据可视化的流程,为应聘相关岗位做好准备。
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()