当前位置: 首页 > news >正文

【数据挖掘】数据采集和预处理

题目内容:

获取数据并进行基本的预处理操作

我这里选用了2006年至2016年1000部IMDB电影数据集

代码如下

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
import matplotlib.pyplot as plt# 加载数据集
df = pd.read_csv('IMDB-Movie-Data.csv')# 查看数据基本信息
print("数据形状:", df.shape)
print("\n前5行数据:")
print(df.head())
print("\n数据基本信息:")
print(df.info())# 检查缺失值
print("缺失值统计:")
print(df.isnull().sum())# 处理缺失值
# Revenue用中位数填充
df['Revenue (Millions)'].fillna(df['Revenue (Millions)'].median(), inplace=True)
# Metascore用均值填充
df['Metascore'].fillna(df['Metascore'].mean(), inplace=True)print("\n处理后缺失值统计:")
print(df.isnull().sum())# 检查重复值
print("重复值数量:", df.duplicated().sum())# 检查标题重复(可能有重名电影)
print("标题重复数量:", df['Title'].duplicated().sum())# 将Revenue和Metascore转换为float类型
df['Revenue (Millions)'] = df['Revenue (Millions)'].astype(float)
df['Metascore'] = df['Metascore'].astype(float)# 提取年份中的 decade 信息
df['Decade'] = (df['Year'] // 10 * 10).astype(int)# 从Genre列提取第一个类型作为主类型
df['Main_Genre'] = df['Genre'].apply(lambda x: x.split(',')[0])# 从Actors列提取主演数量
df['Actors_Count'] = df['Actors'].apply(lambda x: len(x.split(',')))# 创建高收入标志(收入高于75%分位数)
revenue_75 = df['Revenue (Millions)'].quantile(0.75)
df['High_Revenue'] = df['Revenue (Millions)'].apply(lambda x: 1 if x >= revenue_75 else 0)# 检查数值列的异常值
num_cols = ['Runtime (Minutes)', 'Rating', 'Votes', 'Revenue (Millions)', 'Metascore']
print("\n数值列描述统计:")
print(df[num_cols].describe())# 处理Runtime异常值(超过3小时或少于30分钟的电影)
df = df[(df['Runtime (Minutes)'] >= 30) & (df['Runtime (Minutes)'] <= 180)]# 对数值特征进行归一化
scaler = MinMaxScaler()
df[['Rating_Norm', 'Votes_Norm']] = scaler.fit_transform(df[['Rating', 'Votes']])# 查看标准化结果
print("\n标准化结果示例:")
print(df[['Rating', 'Rating_Norm', 'Votes', 'Votes_Norm']].head())# 数值型特征的统计信息
print("\n数值特征描述统计:")
print(df[num_cols].describe())# 类别型特征的统计信息
print("\n电影类型分布:")
print(df['Main_Genre'].value_counts().head(10))# 电影评分与收入关系
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Rating', y='Revenue (Millions)', data=df)
plt.title('电影评分与收入关系')
plt.show()

运行结果

http://www.lryc.cn/news/576192.html

相关文章:

  • Milvus报错,reson=timestamp lag too large
  • [Python]-基础篇1- 从零开始的Python入门指南
  • C++11 <chrono> 库特性:从入门到精通
  • SpringMVC系列(四)(请求处理的十个实验(下))
  • 【请关注】制造企业机械加工数据脱敏解决方案
  • 【数据分析,相关性分析】Matlab代码#数学建模#创新算法
  • 目标跟踪存在问题以及解决方案
  • Linux信号机制:从入门到精通
  • Windows VMWare Centos环境下安装Docker并配置MySql
  • 香港 8C 站群服务器买来可以做哪些业务?
  • opi是opensuse独占的吗?
  • 工厂“智能指挥家”上线,富唯智能调度系统让机器人高效协作
  • 关于SAP产品名称变更通知 SAP云认证实施商工博科技
  • 导出docker-compse.yml中docker镜像成tar文件
  • 基于fpga的串口控制的音乐播放器
  • 从0开始学习计算机视觉--Day04--损失函数
  • 微信小程序:实现树形结构组件
  • 【MySQL进阶】服务器配置与管理——系统变量,选项,状态变量
  • 将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式
  • Flotherm许可状态检查
  • Godot4.3类星露谷游戏开发之【简易库存】(UI部分)
  • HTTPS hostname wrong: should be <xxx>错误解决
  • 【大模型水印论文阅读2】前缀文本编码、均匀性约束
  • Stable Diffusion 3终极提示词库:2000个工业设计场景生成公式(2025企业级实战指南)
  • 强化学习理论基础:从Q-learning到PPO的算法演进(2)
  • openGL学习(基本窗口)
  • [ linux-系统 ] 磁盘与文件系统
  • 【论文阅读 | CVPR 2025 |MambaVision:一种混合 Mamba-Transformer 视觉骨干网络】
  • 2025.6.27总结
  • 机器人 URDF学习笔记