在上一步中,我爬取到了考公,教资,银行,企业管理这四个行业的一些面试问题,但是在这些数据中存在一些噪声数据,今天我主要完成数据清洗的工作。
以下以企业管理数据为例,展示数据清洗过程。
1. 读取数据
首先,读取之前爬取的数据集文件:
import pandas as pd
# 读取CSV文件
df = pd.read_csv('business_management_interview_questions.csv')
# 显示前几行数据
print(df.head())
数据清洗
进行数据清洗,包括去除空值、去重、去除噪声数据等操作:
# 去除空值
df.dropna(subset=['Question', 'Answer'], inplace=True)
# 去除重复值
df.drop_duplicates(subset=['Question', 'Answer'], keep='first', inplace=True)
# 去除噪声数据
# 例如,去除过短的问答对
df = df[df['Question'].str.len() > 10]
df = df[df['Answer'].str.len() > 20]
# 显示清洗后的数据
print(df.head())
print(f"数据集中共有{df.shape[0]}条记录")
数据标准化
统一数据格式,例如去除多余的空格、转换成小写字母等:
# 去除多余的空格
df['Question'] = df['Question'].str.strip()
df['Answer'] = df['Answer'].str.strip()
# 转换成小写字母
df['Question'] = df['Question'].str.lower()
df['Answer'] = df['Answer'].str.lower()
# 显示标准化后的数据
print(df.head())
. 数据多样性
确保数据集的多样性,避免模型过拟合。可以通过检查和筛选数据来保证多样性:
# 检查问题的唯一性
unique_questions = df['Question'].nunique()
total_questions = df.shape[0]
print(f"问题的唯一性:{unique_questions}/{total_questions}")
# 检查答案的多样性
unique_answers = df['Answer'].nunique()
total_answers = df.shape[0]
print(f"答案的多样性:{unique_answers}/{total_answers}")
保存清洗后的数据
将清洗和整理后的数据保存到新的json文件中:
# 保存清洗后的数据
df.to_csv('cleaned_business_management_interview_questions.csv', index=False, encoding='utf-8')
print("数据清洗和整理完毕,并保存到 cleaned_business_management_interview_questions.csv 文件中")
完整的示例代码
以下是完整的代码示例,将上述所有步骤整合在一起:
import pandas as pd
import json
# 读取CSV文件
df = pd.read_csv('business_management_interview_questions.csv')
# 去除空值
df.dropna(subset=['Question', 'Answer'], inplace=True)
# 去除重复值
df.drop_duplicates(subset=['Question', 'Answer'], keep='first', inplace=True)
# 去除噪声数据
df = df[df['Question'].str.len() > 10]
df = df[df['Answer'].str.len() > 20]
# 去除多余的空格
df['Question'] = df['Question'].str.strip()
df['Answer'] = df['Answer'].str.strip()
# 转换成小写字母
df['Question'] = df['Question'].str.lower()
df['Answer'] = df['Answer'].str.lower()
# 构造ChatGLM3-6B格式的数据
data = []
for idx, row in df.iterrows():
entry = {
"instruction": row['Question'],
"input": "",
"output": row['Answer']
}
data.append(entry)
# 保存为JSON文件
with open('chatglm_business_management_interview_questions.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
print("数据已转换为ChatGLM3-6B格式,并保存到 chatglm_business_management_interview_questions.json 文件中")
gpt辅助
经过清洗之后的数据集主要内容中已经没有了网页标签等无关内容,仅保留了主要的文本内容,接下来,我通过gpt帮助我生成了格式符合要求的数据集
数据集
[
{
"instruction": "你如何看待当前企业管理中的挑战?",
"input": "",
"output": "当前企业管理中的挑战主要包括技术变革、市场竞争、人才管理和企业文化等方面..."
},
{
"instruction": "你认为一个好的企业管理者应该具备哪些素质?",
"input": "",
"output": "一个好的企业管理者应该具备领导力、沟通能力、决策能力、创新思维和团队合作精神..."
},
{
"instruction": "如何处理团队内部的冲突?",
"input": "",
"output": "处理团队内部冲突需要先了解冲突的根源,然后通过有效沟通、协商解决方案,并促进团队成员之间的理解和合作..."
}
]