当前位置: 首页 > 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.lqws.cn/news/544645.html

相关文章:

  • 如何确保京东商品数据采集的准确性和及时性?
  • 【lua】Linux上安装lua和luarocks包管理工具
  • 提升AI准确性的关键:精准添加上下文
  • 【NodeJs】【npm】npm安装electron报错
  • Python Async 编程快速入门 | 超简明异步协程指南
  • C++常用算法解析:sort、find、for_each、copy
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • cuda编程笔记(5)--原子操作
  • UI前端与数字孪生结合案例分享:智慧零售的可视化解决方案
  • 北京燃气集团管道腐蚀智能预测实践:LSTM算法驱动能源设施安全升级
  • VSCode中创建和生成动态库项目
  • 智能呼叫系统五大核心模式解析
  • 使用mitmdump实现高效实时抓包处理:从原理到实践
  • 技术博客:如何用针孔相机模型理解图像
  • 基于Redis分布式的限流
  • 一款专业的顽固软件卸载工具
  • ubuntu下利用Qt添加相机设备并运行arm程序
  • GO 语言学习 之 变量和常量
  • 神经形态计算与人工智能的融合:从生物启发到智能跃迁的IT新纪元
  • 本地部署Dify+Ragflow及使用(一)
  • PHP语法基础篇(六):数组
  • 通达信 稳定盈利多维度趋势分析系统
  • 鸿蒙OS开发IoT控制应用:从入门到实践
  • 概述-2-MySQL安装及启动-1-Dcoker安装MySQL
  • vue将页面导出pdf,vue导出pdf ,使用html2canvas和jspdf组件
  • Jmeter并发测试和持续性压测
  • 手机屏亮点缺陷修复及相关液晶线路激光修复原理
  • 利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类
  • UI前端大数据处理实战技巧:如何有效应对数据延迟与丢失?
  • PILCO: 基于模型的高效策略搜索方法原理解析