【机器学习】嘿马机器学习(科学计算库)第11篇:Pandas,5.12 案例【附代码文档】

58 阅读1分钟

🏆🏆🏆教程全知识点简介:1.机器学习常用科学计算库包括基础定位、目标。2. 人工智能概述涵盖人工智能应用场景、人工智能小案例、人工智能发展必备三要素、人工智能机器学习和深度学习。3. 机器学习概述包括机器学习工作流程、什么是机器学习、模型评估(回归模型评估、拟合)、Azure机器学习模型搭建、完整机器学习项目流程。4. 机器学习基础环境安装与使用包括Jupyter Notebook使用(一级标题、Jupyter Notebook中自动补全代码等相关功能拓展)。5. Matplotlib可视化涵盖Matplotlib HelloWorld(什么是Matplotlib、实现简单Matplotlib画图折线图、画出温度变化图、准备数据、创建画布、绘制折线图、显示图像、构造x轴刻度标签、修改坐标刻度显示、设置中文字体、设置正常显示符号、保存图片)、添加坐标轴刻度、添加网格显示、添加描述信息、图像保存、设置图形风格、常见图形绘制(常见图形种类意义、散点图绘制)。6. Numpy包括Numpy优势、N维数组ndarray(ndarray属性)、基本操作(生成数组方法、生成0和1数组、从现有数组生成、创建符合正态分布股某票涨跌幅数据)、数组间运算(数组与数的运算)。7. Pandas数据结构包括Series、DataFrame。8. 文件读取与存储涵盖CSV(read_csv)、HDF(read_hdf与to_hdf)、JSON(read_josn)。9. 高级处理数据离散化包括为什么要离散化、什么是数据离散化、股某票涨跌幅离散化(读取股某票数据、将股某票涨跌幅数据进行分组、股某票涨跌幅分组数据变成one_hot编码)、案例实现。


📚📚👉👉👉本站这篇博客:   juejin.cn/post/752234…    中查看

📚📚👉👉👉本站这篇博客:   juejin.cn/post/752234…    中查看

✨ 本教程项目亮点

🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

Pandas

学习目标

  • 了解Numpy与Pandas的不同
  • 说明Pandas的Series与Dataframe两种结构的区别
  • 了解Pandas的MultiIndex与panel结构
  • 应用Pandas实现基本数据操作
  • 应用Pandas实现数据的合并
  • 应用crosstab和pivot_table实现交叉表与透视表
  • 应用groupby和聚合函数实现数据的分组与聚合
  • 了解Pandas的plot画图功能
  • 应用Pandas实现数据的读取和存储

5.12 案例

学习目标

  • 目标


1 需求

现在 有一组从2006年到2016年1000部最流行的电影数据

数据来源:www.kaggle.com/damianpanek…

  • 问题1: 想知道这些电影数据中评分的平均分,导演的人数等信息, 应该怎么获取?

  • 问题2:对于这一组电影数据,如果 想rating,runtime的分布情况,应该如何呈现数据?

  • 问题3:对于这一组电影数据,如果 希望统计电影分类(genre)的情况,应该如何处理数据?

2 实现

首先获取导入包,获取数据

%matplotlib inline
import pandas  as pd 
import numpy as np
from matplotlib import pyplot as plt
  
  
#文件的路径
  
  
path = "./data/IMDB-Movie-Data.csv"
  
  
#读取文件
  
  
df = pd.read_csv(path)

2.1 问题一:

** 想知道这些电影数据中评分的平均分,导演的人数等信息, 应该怎么获取?**

  • 得出评分的平均分

使用mean函数

df["Rating"].mean()
  • 得出导演人数信息

求出唯一值,然后进行形状获取

  
  
## 导演的人数
  
  
  
  
# df["Director"].unique().shape[0]
  
  
np.unique(df["Director"]).shape[0]

644

2.2 问题二:

对于这一组电影数据,如果 想Rating,Runtime (Minutes)的分布情况,应该如何呈现数据?

  • 直接呈现,以直方图的形式

选择分数列数据,进行plot

df["Rating"].plot(kind='hist',figsize=(20,8))

  • Rating进行分布展示

进行绘制直方图

plt.figure(figsize=(20,8),dpi=80)
plt.hist(df["Rating"].values,bins=20)
plt.show()

PyQuery 文档

修改刻度的间隔

  
  
# 求出最大最小值
  
  
max_ = df["Rating"].max()
min_ = df["Rating"].min()

  
  
# 生成刻度列表
  
  
t1 = np.linspace(min_,max_,num=21)

  
  
# [ 1.9    2.255  2.61   2.965  3.32   3.675  4.03   4.385  4.74   5.095  5.45   5.805  6.16   6.515  6.87   7.225  7.58   7.935  8.29   8.645  9.   ]
  
  

  
  
# 修改刻度
  
  
plt.xticks(t1)

  
  
# 添加网格
  
  
plt.grid()

  • Runtime (Minutes)进行分布展示

进行绘制直方图

plt.figure(figsize=(20,8),dpi=80)
plt.hist(df["Runtime (Minutes)"].values,bins=20)
plt.show()

修改间隔

  
  
# 求出最大最小值
  
  
max_ = df["Runtime (Minutes)"].max()
min_ = df["Runtime (Minutes)"].min()

  
  
# # 生成刻度列表
  
  
t1 = np.linspace(min_,max_,num=21)

  
  
# 修改刻度
  
  
plt.xticks(np.linspace(min_,max_,num=21))

  
  
# 添加网格
  
  
plt.grid()

2.3 问题三:

对于这一组电影数据,如果 希望统计电影分类(genre)的情况,应该如何处理数据?

  • 思路分析

    • 思路

      • 1、创建一个全为0的dataframe,列索引置为电影的分类,temp_df
      • 2、遍历每一部电影,temp_df中把分类出现的列的值置为1
      • 3、求和
  • 1、创建一个全为0的dataframe,列索引置为电影的分类,temp_df

  
  
# 进行字符串分割
  
  
temp_list = [i.split(",") for i in df["Genre"]]
  
  
# 获取电影的分类
  
  
genre_list = np.unique([i for j in temp_list for i in j]) 

  
  
# 增加新的列
  
  
temp_df = pd.DataFrame(np.zeros([df.shape[0],genre_list.shape[0]]),columns=genre_list)
  • 2、遍历每一部电影,temp_df中把分类出现的列的值置为1
for i in range(1000):
    #temp_list[i] ['Action','Adventure','Animation']
    temp_df.ix[i,temp_list[i]]=1
print(temp_df.sum().sort_values())
  • 3、求和,绘图

Python for Everybody

temp_df.sum().sort_values(ascending=False).plot(kind="bar",figsize=(20,8),fontsize=20,colormap="cool")


Musical        5.0
Western        7.0
War           13.0
Music         16.0
Sport         18.0
History       29.0
Animation     49.0
Family        51.0
Biography     81.0
Fantasy      101.0
Mystery      106.0
Horror       119.0
Sci-Fi       120.0
Romance      141.0
Crime        150.0
Thriller     195.0
Adventure    259.0
Comedy       279.0
Action       303.0
Drama        513.0
dtype: float64

Pandas

学习目标

  • 了解Numpy与Pandas的不同
  • 说明Pandas的Series与Dataframe两种结构的区别
  • 了解Pandas的MultiIndex与panel结构
  • 应用Pandas实现基本数据操作
  • 应用Pandas实现数据的合并
  • 应用crosstab和pivot_table实现交叉表与透视表
  • 应用groupby