type
status
date
slug
summary
tags
category
icon
password
AI 摘要
1. Pandas介绍
学习目标
- 目标 - 了解什么是pandas - 了解Numpy与Pandas的不同 - 知道使用pandas的优势
1 Pandas介绍
- 2008年WesMcKinney开发出的库
- 专门用于数据挖掘的开源python库
- 以Numpy为基础,借力Numpy模块在计算方面性能高的优势
- 基于matplotlib,能够简便的画图
- 独特的数据结构
2 为什么使用Pandas
Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?
- 增强图表可读性
- 回忆我们在numpy当中创建学生成绩表样式:
- 返回结果:
python array([[92, 55, 78, 50, 50], [71, 76, 50, 48, 96], [45, 84, 78, 51, 68], [81, 91, 56, 54, 76], [86, 66, 77, 67, 95], [46, 86, 56, 61, 99], [46, 95, 44, 46, 56], [80, 50, 45, 65, 57], [41, 93, 90, 41, 97], [65, 83, 57, 57, 40]])
如果数据展示为这样,可读性就会更友好:
- 便捷的数据处理能力
- 读取文件方便
- 封装了Matplotlib、Numpy的画图和计算
3 小结
- pandas的优势【了解】 - 增强图表可读性 - 便捷的数据处理能力 - 读取文件方便 - 封装了Matplotlib、Numpy的画图和计算
52. Pandas数据结构
学习目标
- 目标 - 知道Pandas的Series结构 - 掌握Pandas的Dataframe结构 - 了解Pandas的MultiIndex与panel结构
Pandas中一共有三种数据结构,分别为:Series、DataFrame和MultiIndex(老版本中叫Panel )。
其中Series是一维数据结构,DataFrame是二维的表格型数据结构,MultiIndex是三维的数据结构。
1.Series
Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。
1.1 Series的创建
- 参数: - data:传入的数据,可以是ndarray、list等 - index:索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 - dtype:数据的类型
通过已有数据创建
- 指定内容,默认索引
- 指定索引
- 通过字典数据创建
1.2 Series的属性
为了更方便地操作Series对象中的索引和数据,Series中提供了两个属性index和values
- index
- values
也可以使用索引来获取数据:
2.DataFrame
DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引
- 行索引,表明不同行,横向索引,叫index,0轴,axis=0
- 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1
2.1 DataFrame的创建
- 参数: - index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 - columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
- 通过已有数据创建
举例一:
回忆咱们在前面直接使用np创建的数组显示方式,比较两者的区别。
举例二:创建学生成绩表
但是这样的数据形式很难看到存储的是什么的样的数据,可读性比较差!!
问题:如何让数据更有意义的显示?
给分数数据增加行列索引,显示效果更佳
效果:
- 增加行、列索引
### 2.2 DataFrame的属性
- shape
- index
DataFrame的行索引列表
- columns
DataFrame的列索引列表
- values
直接获取其中array的值
- T
转置
结果
- head(5):显示前5行内容
如果不补充参数,默认5行。填入参数N则显示前N行
- tail(5):显示后5行内容
如果不补充参数,默认5行。填入参数N则显示后N行
2.3 DatatFrame索引的设置
需求:
2.3.1 修改行列索引值
注意:以下修改方式是错误的
2.3.2 重设索引
- reset_index(drop=False) * 设置新的下标索引 * drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
2.3.3 以某列值设置为新的索引
- set_index(keys, drop=True) * keys : 列索引名成或者列索引名称的列表 * drop : boolean, default True.当做新的索引,删除原来的列
设置新索引案例
1、创建
2、以月份设置新的索引
3、设置多个索引,以年和月份
注:通过刚才的设置,这样DataFrame就变成了一个具有MultiIndex的DataFrame。
3.MultiIndex与Panel
3.1 MultiIndex
MultiIndex是三维的数据结构;
多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引。
3.1.1 multiIndex的特性
打印刚才的df的行索引结果
多级或分层索引对象。
- index属性 * names:levels的名称 * levels:每个level的元组值
3.1.2 multiIndex的创建
3.2 Panel
3.2.1 panel的创建
- class
pandas.Panel
(data=None, items=None, major_axis=None, minor_axis=None)
- 作用:存储3维数组的Panel结构
- 参数:
- data : ndarray或者dataframe
- items : 索引或类似数组的对象,axis=0
- major_axis : 索引或类似数组的对象,axis=1
- minor_axis : 索引或类似数组的对象,axis=2
结果
<class ‘pandas.core.panel.Panel’>
Dimensions: 4 (items) x 3 (major_axis) x 2 (minor_axis)
Items axis: A to D
Major_axis axis: 2013-01-01 00:00:00 to 2013-01-03 00:00:00
Minor_axis axis: first to second
3.2.2 查看panel数据
注:Pandas从版本0.20.0开始弃用:推荐的用于表示3D数据的方法是通过DataFrame上的MultiIndex方法
4 小结
- pandas的优势【了解】 - 增强图表可读性 - 便捷的数据处理能力 - 读取文件方便 - 封装了Matplotlib、Numpy的画图和计算
- series【知道】 - 创建 - pd.Series([], index=[]) - pd.Series({}) - 属性 - 对象.index - 对象.values
- DataFrame【掌握】 - 创建 - pd.DataFrame(data=None, index=None, columns=None) - 属性 - shape – 形状 - index – 行索引 - columns – 列索引 - values – 查看值 - T – 转置 - head() – 查看头部内容 - tail() – 查看尾部内容 - DataFrame索引 - 修改的时候,需要进行全局修改 - 对象.reset_index() - 对象.set_index(keys)
- MultiIndex与Panel【了解】 - multiIndex: - 类似ndarray中的三维数组 - 创建: - pd.MultiIndex.from_arrays() - 属性: - 对象.index - panel: - pd.Panel(data, items, major_axis, minor_axis) - panel数据要是想看到,则需要进行索引到dataframe或者series才可以
3. 基本数据操作
学习目标
- 目标 - 记忆DataFrame的形状、行列索引名称获取等基本属性 - 应用Series和DataFrame的索引进行切片获取 - 应用sort_index和sort_values实现索引和值的排序
为了更好的理解这些基本操作,我们将读取一个真实的股票数据。关于文件操作,后面在介绍,这里只先用一下API
1 索引操作
Numpy当中我们已经讲过使用索引选取序列和切片选择,pandas也支持类似的操作,也可以直接使用列名、行名
称,甚至组合使用。
1.1 直接使用行列索引(先列后行)
获取’2018-02-27’这天的’close’的结果
1.2 结合loc或者iloc使用索引
获取从’2018-02-27’:‘2018-02-22’,’open’的结果
1.3 使用ix组合索引
Warning:Starting in 0.20.0, the .ix indexer is deprecated, in favor of the more strict .iloc and .loc indexers.
获取行第1天到第4天,[‘open’, ‘close’, ‘high’, ‘low’]这个四个指标的结果
2 赋值操作
对DataFrame当中的close列进行重新赋值为1
3 排序
排序有两种形式,一种对于索引进行排序,一种对于内容进行排序
3.1 DataFrame排序
- 使用df.sort_values(by=, ascending=) * 单个键或者多个键进行排序, * 参数: * by:指定排序参考的键 * ascending:默认升序 * ascending=False:降序 * ascending=True:升序
- 使用df.sort_index给索引进行排序
这个股票的日期索引原来是从大到小,现在重新排序,从小到大
3.2 Series排序
- 使用series.sort_values(ascending=True)进行排序
series排序时,只有一列,不需要参数
- 使用series.sort_index()进行排序
与df一致
4 总结
- 1.索引【掌握】 - 直接索引 – 先列后行,是需要通过索引的字符串进行获取 - loc – 先行后列,是需要通过索引的字符串进行获取 - iloc – 先行后列,是通过下标进行索引 - ix – 先行后列, 可以用上面两种方法混合进行索引
- 2.赋值【知道】 - data[“”] = - data. = **
- 3.排序【知道】 - dataframe - 对象.sort_values() - 对象.sort_index() - series - 对象.sort_values() - 对象.sort_index()
4. DataFrame运算
学习目标
- 目标 - 应用add等实现数据间的加、减法运算 - 应用逻辑运算符号实现数据的逻辑筛选 - 应用isin, query实现数据的筛选 - 使用describe完成综合统计 - 使用max, min, mean, std完成统计计算 - 使用idxmin、idxmax完成最大值最小值的索引 - 使用cumsum等实现累计分析 - 应用apply函数实现数据的自定义处理
1 算术运算
- add(other)
比如进行数学运算加上具体的一个数字
- sub(other)’
2 逻辑运算
2.1 逻辑运算符号
- 例如筛选data[“open”] > 23的日期数据 * data[“open”] > 23返回逻辑结果
- 完成多个逻辑判断,
2.2 逻辑运算函数
- query(expr) * expr:查询字符串
通过query使得刚才的过程更加方便简单
- isin(values)
例如判断’open’是否为23.53和23.85
3 统计运算
3.1 describe
综合分析: 能够直接得出很多统计结果,
count
, mean
, std
, min
, max
等3.2 统计函数
Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数), var(方差), std(标准差),mode(众数)结果:
count | Number of non-NA observations |
sum | Sum of values |
mean | Mean of values |
median | Arithmetic median of values |
min | Minimum |
max | Maximum |
mode | Mode |
abs | Absolute Value |
prod | Product of values |
std | Bessel-corrected sample standard deviation |
var | Unbiased variance |
idxmax | compute the index labels with the maximum |
idxmin | compute the index labels with the minimum |
对于单个函数去进行统计的时候,坐标轴还是按照默认列“columns” (axis=0, default),如果要对行“index” 需要指定(axis=1)
- max()、min()
- std()、var()
- median():中位数
中位数为将数据从小到大排列,在最中间的那个数为中位数。如果没有中间数,取中间两个数的平均值。
- idxmax()、idxmin()
3.3 累计统计函数
函数 | 作用 |
cumsum | 计算前1/2/3/…/n个数的和 |
cummax | 计算前1/2/3/…/n个数的最大值 |
cummin | 计算前1/2/3/…/n个数的最小值 |
cumprod | 计算前1/2/3/…/n个数的积 |
那么这些累计统计函数怎么用?
以上这些函数可以对series和dataframe操作
这里我们按照时间的从前往后来进行累计
- 排序
- 对p_change进行求和
那么如何让这个连续求和的结果更好的显示呢?
如果要使用plot函数,需要导入matplotlib.
关于plot,稍后会介绍API的选择
4 自定义运算
- apply(func, axis=0) * func:自定义函数 * axis=0:默认是列,axis=1为行进行运算
- 定义一个对列,最大值-最小值的函数
5 小结
- 算术运算【知道】
- 逻辑运算【知道】 - 1.逻辑运算符号 - 2.逻辑运算函数 - 对象.query() - 对象.isin()
- 统计运算【知道】 - 1.对象.describe() - 2.统计函数 - 3.累积统计函数
- 自定义运算【知道】 - apply(func, axis=0)
5. Pandas画图
学习目标
- 目标 - 了解DataFrame的画图函数 - 了解Series的画图函数
1 pandas.DataFrame.plot
DataFrame.plot
(kind=‘line’)
- kind : str,需要绘制图形的种类 * ‘line’ : line plot (default) * ‘bar’ : vertical bar plot * ‘barh’ : horizontal bar plot * 关于“barh”的解释: * http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.barh.html * ‘hist’ : histogram * ‘pie’ : pie plot * ‘scatter’ : scatter plot
更多细节:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html?highlight=plot#pandas.DataFrame.plot
2 pandas.Series.plot
更多细节:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.plot.html?highlight=plot#pandas.Series.plot
6. 文件读取与存储
##学习目标
- 目标 - 了解Pandas的几种文件读取存储操作 - 应用CSV方式、HDF方式和json方式实现文件的读取和存储
我们的数据大部分存在于文件当中,所以pandas会支持复杂的IO操作,pandas的API支持众多的文件格式,如CSV、SQL、XLS、JSON、HDF5。
注:最常用的HDF5和CSV文件
1 CSV
1.1 read_csv
- pandas.read_csv(filepath_or_buffer, sep =‘,’, usecols ) * filepath_or_buffer:文件路径 * sep :分隔符,默认用”,“隔开 * usecols:指定读取的列名,列表形式
- 举例:读取之前的股票的数据
1.2 to_csv
- DataFrame.to_csv(path_or_buf=None, sep=‘,’, columns=None, header=True, index=True, mode=‘w’, encoding=None) * path_or_buf :文件路径 * sep :分隔符,默认用”,“隔开 * columns :选择需要的列索引 * header :boolean or list of string, default True,是否写进列索引值 * index:是否写进行索引 * mode:‘w’:重写, ‘a’ 追加
- 举例:保存读取出来的股票数据 - 保存’open’列的数据,然后读取查看结果
会发现将索引存入到文件当中,变成单独的一列数据。如果需要删除,可以指定index参数,删除原来的文件,重新保存一次。
2 HDF5
2.1 read_hdf与to_hdf
HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame
- pandas.read_hdf(path_or_buf,key =None,** kwargs)
从h5文件当中读取数据
- path_or_buffer:文件路径
* key:读取的键
* return:Theselected object
- DataFrame.to_hdf(path_or_buf, key, **kwargs)
2.2 案例
- 读取文件
如果读取的时候出现以下错误
需要安装安装tables模块避免不能读取HDF5文件
- 存储文件
再次读取的时候, 需要指定键的名字
注意:优先选择使用HDF5文件存储
- HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的
- 使用压缩可以提磁盘利用率,节省空间
- HDF5还是跨平台的,可以轻松迁移到hadoop 上面
3 JSON
JSON是我们常用的一种数据交换格式,前面在前后端的交互经常用到,也会在存储的时候选择这种格式。所以我们需要知道Pandas如何进行读取和存储JSON格式。
3.1 read_json
- pandas.read_json(path_or_buf=None, orient=None, typ=‘frame’, lines=False) * 将JSON格式准换成默认的Pandas DataFrame格式 * orient : string,Indication of expected JSON string format. * ‘split’ : dict like {index -> [index], columns -> [columns], data -> [values]} * split 将索引总结到索引,列名到列名,数据到数据。将三部分都分开了 * ‘records’ : list like [{column -> value}, … , {column -> value}] * records 以
columns:values
的形式输出 * ‘index’ : dict like {index -> {column -> value}} * index 以index:{columns:values}...
的形式输出 * ‘columns’ : dict like {column -> {index -> value}},默认该格式 * colums 以columns:{index:values}
的形式输出 * ‘values’ : just the values array * values 直接输出值 * lines : boolean, default False * 按照每行读取json对象 * typ : default ‘frame’, 指定转换成的对象类型series或者dataframe
3.2 read_josn 案例
- 数据介绍
这里使用一个新闻标题讽刺数据集,格式为json。
is_sarcastic
:1讽刺的,否则为0;headline
:新闻报道的标题;article_link
:链接到原始新闻文章。存储格式为:- 读取
orient指定存储的json格式,lines指定按照行去变成一个样本
结果为:
3.3 to_json
- DataFrame.to_json(path_or_buf=None, orient=None, lines=False) - 将Pandas 对象存储为json格式 - path_or_buf=None:文件地址 - orient:存储的json形式,{‘split’,’records’,’index’,’columns’,’values’} - lines:一个对象存储为一行
3.4 案例
- 存储文件
结果
- 修改lines参数为True
结果
4 小结
- pandas的CSV、HDF5、JSON文件的读取【知道】 * 对象.read_() * 对象.to_()
7. 高级处理-缺失值处理
学习目标
- 目标 - 应用isnull判断是否有缺失数据NaN - 应用fillna实现缺失值的填充 - 应用dropna实现缺失值的删除 - 应用replace实现数据的替换
1 如何处理nan
- 获取缺失值的标记方式(NaN或者其他标记方式)
- 如果缺失值的标记方式是NaN
- 判断数据中是否包含NaN:
* pd.isnull(df),
* pd.notnull(df)
- 存在缺失值nan:
* 1、删除存在缺失值的:dropna(axis=‘rows’)
* 注:不会修改原数据,需要接受返回值
- 2、替换缺失值:fillna(value, inplace=True)
* value:替换成的值
* inplace:True:会修改原数据,False:不替换修改原数据,生成新的对象
- 如果缺失值没有使用NaN标记,比如使用”?”
- 先替换‘?’为np.nan,然后继续处理
2 电影数据的缺失值处理
- 电影数据文件获取
2.1 判断缺失值是否存在
- pd.notnull()
- pd.isnull()
2.2 存在缺失值nan,并且是np.nan
- 1、删除
pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan
- 2、替换缺失值
替换所有缺失值:
2.3 不是缺失值nan,有默认标记的
数据是这样的:
以上数据在读取时,可能会报如下错误:
解决办法:
处理思路分析:
- 1、先替换‘?’为np.nan * df.replace(to_replace=, value=) * to_replace:替换前的值 * value:替换后的值
- 2、在进行缺失值的处理
3 小结
- isnull、notnull判断是否存在缺失值【知道】 * np.any(pd.isnull(movie)) # 里面如果有一个缺失值,就返回True * np.all(pd.notnull(movie)) # 里面如果有一个缺失值,就返回False
- dropna删除np.nan标记的缺失值【知道】 * movie.dropna()
- fillna填充缺失值【知道】 * movie[i].fillna(value=movie[i].mean(), inplace=True)
- replace替换具体某些值【知道】 * wis.replace(to_replace=“?”, value=np.NaN)
5.8 高级处理-数据离散化
学习目标
- 目标 - 应用cut、qcut实现数据的区间分组 - 应用get_dummies实现数据的one-hot编码
1 为什么要离散化
连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。
2 什么是数据的离散化
连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数
值代表落在每个子区间中的属性值。
离散化有很多种方法,这使用一种最简单的方式去操作
- 原始人的身高数据:165,174,160,180,159,163,192,184
- 假设按照身高分几个区间段:150~165, 165195
180,180
这样我们将数据分到了三个区间段,我可以对应的标记为矮、中、高三个类别,最终要处理成一个”哑变量”矩阵
3 股票的涨跌幅离散化
我们对股票每日的”p_change”进行离散化
3.1 读取股票的数据
先读取股票的数据,筛选出p_change数据
3.2 将股票涨跌幅数据进行分组
使用的工具:
- pd.qcut(data, q): * 对数据进行分组将数据分组,一般会与value_counts搭配使用,统计每组的个数
- series.value_counts():统计分组次数
自定义区间分组:
- pd.cut(data, bins)
3.3 股票涨跌幅分组数据变成one-hot编码
- 什么是one-hot编码
把每个类别生成一个布尔列,这些列中只有一列可以为这个样本取值为1.其又被称为独热编码。
把下图中左边的表格转化为使用右边形式进行表示:
- pandas.get_dummies(data, prefix=None)
- data:array-like, Series, or DataFrame
- prefix:分组名字
4 小结
- 数据离散化【知道】 * 可以用来减少给定连续属性值的个数 * 在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属性值。
- qcut、cut实现数据分组【知道】 * qcut:大致分为相同的几组 * cut:自定义分组区间
- get_dummies实现哑变量矩阵【知道】
5.9 高级处理-合并
学习目标
- 目标 - 应用pd.concat实现数据的合并 - 应用pd.merge实现数据的合并
如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析
1 pd.concat实现数据合并
- pd.concat([data1, data2], axis=1) * 按照行或列进行合并,axis=0为列索引,axis=1为行索引
比如我们将刚才处理好的one-hot编码与原数据合并
2 pd.merge
- pd.merge(left, right, how=‘inner’, on=None) * 可以指定按照两组数据的共同键值对合并或者左右各自 *
left
: DataFrame *right
: 另一个DataFrame *on
: 指定的共同键 * how:按照什么方式连接
Merge method | SQL Join Name | Description |
left | LEFT OUTER JOIN | Use keys from left frame only |
right | RIGHT OUTER JOIN | Use keys from right frame only |
outer | FULL OUTER JOIN | Use union of keys from both frames |
inner | INNER JOIN | Use intersection of keys from both frames |
2.1 pd.merge合并
- 左连接
- 右连接
- 外链接
3 总结
- pd.concat([数据1, 数据2], axis=**)【知道】
- pd.merge(left, right, how=, on=)【知道】 - how – 以何种方式连接 - on – 连接的键的依据是哪几个
5.10 高级处理-交叉表与透视表
学习目标
- 目标 - 应用crosstab和pivot_table实现交叉表与透视表
1 交叉表与透视表什么作用
探究股票的涨跌与星期几有关?
以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还是坏,里面的数据代表比例
可以理解为所有时间为星期一等等的数据当中涨跌幅好坏的比例
- 交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(用于统计分组频率的特殊透视表) * pd.crosstab(value1, value2)
- 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数 * data.pivot_table()
- DataFrame.pivot_table([], index=[])
2 案例分析
2.1 数据准备
- 准备两列数据,星期数据以及涨跌幅是好是坏数据
- 进行交叉表计算
但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?
- 对于每个星期一等的总天数求和,运用除法运算求出比例
2.2 查看效果
使用plot画出这个比例,使用stacked的柱状图
2.3 使用pivot_table(透视表)实现
使用透视表,刚才的过程更加简单
3 小结
- 交叉表与透视表的作用【知道】 * 交叉表:计算一列数据对于另外一列数据的分组个数 * 透视表:指定某一列对另一列的关系
5.11 高级处理-分组与聚合
学习目标
- 目标 - 应用groupby和聚合函数实现数据的分组与聚合
分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况
想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!!看其中的效果:
1 什么分组与聚合
2 分组API
- DataFrame.groupby(key, as_index=False) * key:分组的列数据,可以多个
- 案例:不同颜色的不同笔的价格数据
- 进行分组,对颜色分组,price进行聚合
3 星巴克零售店铺数据
现在我们有一组关于全球星巴克店铺的统计数据,如果我想知道美国的星巴克数量和中国的哪个多,或者我想知道中国每个省份星巴克的数量的情况,那么应该怎么办?
数据来源:https://www.kaggle.com/starbucks/store-locations/data
3.1 数据获取
从文件中读取星巴克店铺数据
3.2 进行分组聚合
画图显示结果
假设我们加入省市一起进行分组
仔细观察这个结构,与我们前面讲的哪个结构类似??
与前面的MultiIndex结构类似
4 小结
- groupby进行数据的分组【知道】 * pandas中,抛开聚合谈分组,无意义
5.12 案例
学习目标
- 目标 - 无
1 需求
现在我们有一组从2006年到2016年1000部最流行的电影数据
- 问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
- 问题2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?
- 问题3:对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
2 实现
首先获取导入包,获取数据
2.1 问题一:
我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
- 得出评分的平均分
使用mean函数
- 得出导演人数信息
求出唯一值,然后进行形状获取
2.2 问题二:
对于这一组电影数据,如果我们想Rating,Runtime (Minutes)的分布情况,应该如何呈现数据?
- 直接呈现,以直方图的形式
选择分数列数据,进行plot
- Rating进行分布展示
进行绘制直方图
修改刻度的间隔
- Runtime (Minutes)进行分布展示
进行绘制直方图
修改间隔
2.3 问题三:
对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
- 思路分析 * 思路 * 1、创建一个全为0的dataframe,列索引置为电影的分类,temp_df * 2、遍历每一部电影,temp_df中把分类出现的列的值置为1 * 3、求和
- 1、创建一个全为0的dataframe,列索引置为电影的分类,temp_df
- 2、遍历每一部电影,temp_df中把分类出现的列的值置为1
- 3、求和,绘图
- Author:YXH1024
- URL:http://bk.yxh666.top/article/982371e1-73dc-466a-8507-8e09fac456d7
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!