pandas

Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库

Pandas的两大核心数据结构

  • Series(一维数据)
 
Series
 
创建Series的方法
 
允许索引重复
  • DataFrame(多特征数据,既有行索引,又有列索引)
 
DataFrame
 
索引方法
# 创建一个3行4列的DataFrame类型数据
data_3_4 = pd.DataFrame(np.arange(10, 22).reshape(3, 4))
# 打印数据
print(data_3_4) # 打印第一行数据
print(data_3_4[:1])
# 打印第一列数据
print(data_3_4[:][0])
  • DataFrame的属性
 
原始数据
 
DataFrame的属性
# 读取数据
result = pd.read_csv("./students_score.csv")
# 数据的形状
result.shape
# 每列数据的 类型信息
result.dtypes
# 数据的维数
result.ndim
# 数据的索引(起/始/步长)
result.index
# 打印每一列 属性的名称
result.columns
# 将数据放到数组中显示
result.values
 
整体查询
# 打印前5个
print("-->前5个:")
print(result.head(5))
# 打印后5个
print("-->后5个:")
print(result.tail(5))
# 打印描述信息(实验中好用)
print("-->描述信息:")
print(result.describe())

Panda数据读取(以csv为例)

pandas.read_csv(filepath_or_buffer, sep=",", names=None, usecols = None)

filepath_or_buffer : 文件路径(本地路径或url路径)
sep: 分隔符
names: 列索引的名字
usecols: 指定读取的列名 返回的类型: DataFrame
 
读取并返回数据
  • Dataframe通过布尔索引过滤数据
 
布尔索引
# 布尔索引(查询) 找出年龄大于23岁的人
result[result["age"]>23]

小案例: 分析2006年至2016年1000部IMDB电影数据

 
2006年----2016年IMDB最受欢迎的1000部电影
 
评分降序排列
 
统计时长
IMDB_1000 = pd.read_csv("./IMDB-Movie-Data.csv")
# 获取数据字段
print(IMDB_1000.dtypes)
# 根据1000部电影评分进行降序排列,参数ascending, 默认为True(升序), 这里为False(降序)
IMDB_1000.sort_values(by="Rating", ascending=False)
# 时间最长的电影
IMDB_1000[IMDB_1000["Runtime (Minutes)"]==IMDB_1000["Runtime (Minutes)"].max()]
# 时间最短的电影
IMDB_1000[IMDB_1000["Runtime (Minutes)"]==IMDB_1000["Runtime (Minutes)"].min()]
# 电影时长平均值
IMDB_1000["Runtime (Minutes)"].mean()

数据处理

  • 存在缺失值, 直接删除数据(删除存在缺失值的样本)
 
删除存在缺失值的样本
# 删除存在缺失值的样本
IMDB_1000.dropna()

不推荐的操作: 按列删除缺失值为IMDB_1000.dropna(axis=1)

  • 存在缺失值, 直接填充数据fillna
 
填充空缺值
 
使用平均值填充数据
# 为一些电影缺失的总票房添加平均值
IMDB_1000["Revenue (Millions)"].fillna(IMDB_1000["Revenue (Millions)"].mean(), inplace=True)

小案例: 乳腺癌数据预处理 (在线获取数据,并替换缺失符号为标准缺失符号np.nan)

 
替换默认的缺失符号
 
各列命名
 
读取原始数据
# 在线读取数据,并按照说明文档, 并对各列信息进行命名
bcw = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data", names=["Sample code number","Clump Thickness","Uniformity of Cell Size","Uniformity of Cell Shape", "Marginal Adhesion","Single Epithelial Cell Size","Bare Nuclei","Bland Chromatin","Normal Nucleoli","Mitoses","Class:"])
 
预处理,把?替换为np.nan

小案例: 日期格式转换 数据来源

 
facebook
 
日期格式转换
# 读取前10行数据
train = pd.read_csv("./train.csv", nrows = 10)
# 将数据中的time转换为最小分度值为秒(s)的计量单位
train["time"] = pd.to_datetime(train["time"], unit="s")
  • 从日期中拆分出新的列
 
新增列
# 新增列year, month, weekday
train["year"] = pd.DatetimeIndex(train["time"]).year
train["month"] = pd.DatetimeIndex(train["time"]).month
train["weekday"] = pd.DatetimeIndex(train["time"]).weekday

数据表的合并(merge)

 
数据
user_info.csv
user_id,姓名,age
1,徐三,23
2,徐四,22
3,宝儿,210
4,楚岚,21
5,王也,24
6,诸葛青,21
7,天师,89
8,吕梁,24
9,夏禾,26
goods_info.csv
goods_id,goods_name
G10,三只松鼠
G12,MacBook
G13,iPad
G14,iPhone
order_info.csv
order_id,use_id,goods_name
as789,1,三只松鼠
sd567,2,MacBook
hj456,4,iPad
 
合并过程
# 读取3张表
user_info = pd.read_csv("./user_info.csv")
order_info = pd.read_csv("./order_info.csv")
goods_info = pd.read_csv("./goods_info.csv")
# 合并三张表
u_o = pd.merge(user_info, order_info, how="left", on=["user_id", "user_id"])
u_o_g = pd.merge(u_o, goods_info, how="left", on=["goods_name", "goods_name"])
  • 建立交叉表(用于计算分组的频率)
 
交叉表
# 交叉表, 表示出用户姓名,和商品名之间的关系
user_goods = pd.crosstab(u_o_g["姓名"],u_o_g["goods_name"])

Pandas的分组和聚合(重要)

小案例: 星巴克全球分布情况 数据来源

 
全球星巴克分布情况
 
读取全球星巴克的位置数据
 
每个国家星巴克的数量
 
每个国家每个省份星巴克的数量
starbucks = pd.read_csv("./directory.csv")
# 统计每个国家星巴克的数量
starbucks.groupby(["Country"]).count()
# 统计每个国家 每个省份 星巴克的数量
starbucks.groupby(["Country", "State/Province"]).count()
  • 全球各国星巴克数量排名
 
全球星巴克数量排名

作者:木子昭
链接:https://www.jianshu.com/p/7414364992e4
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

机器学习三剑客之Pandas的更多相关文章

  1. 机器学习 三剑客 之 pandas + numpy

    机器学习 什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测 机器学习存在的目的和价值领域? 领域: 医疗.航空.教育.物流.电商 等... 目的: 让机器学习 ...

  2. 机器学习三剑客之Pandas中DataFrame基本操作

    Pandas 是基于Numpy 的一种工具,是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷 ...

  3. Python:机器学习三剑客之 NumPy

    一.numpy简介 Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一.Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组.部分功能如下: ndarray, ...

  4. 数据分析三剑客之pandas

    Pandas 引入 前面一篇文章我们介绍了numpy,但numpy的特长并不是在于数据处理,而是在它能非常方便地实现科学计算,所以我们日常对数据进行处理时用的numpy情况并不是很多,我们需要处理的数 ...

  5. python 机器学习三剑客 之 Matplotlib

    Matplotlib介绍: Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要几 ...

  6. 【机器学习_8】pandas

    背景 关于同一个话题,不同作者也有不同行文结构.但要真正理解并会用,在我的经验里,是必须要自己重新组织的. 本文是基于以往看过的资料,从自身数据处理应用的角度出发,重新组织pandas应用结构,希望能 ...

  7. 机器学习三剑客之Numpy库基本操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  8. Numpy 机器学习三剑客之Numpy

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  9. 机器学习三剑客之Numpy

      Numpy NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效 ...

随机推荐

  1. Powershell 脚本调用方法

    方法一: Get-Content "D:\PowershellScripts\Test\ErrorMailNotice.ps1" | Invoke-Expression 方法二: ...

  2. Spring 的IOC容器之注解的方式

    1. 环境搭建 1.1 导入所需 jar 包 引入 IOC 容器必须的6个jar包; spring-aop-4.3.10.RELEASE.jar, Spring 框架的AOP的jar包; 1.2 创建 ...

  3. Java 之内部类

    概述 内部类修饰符 内部类的细节 局部内部类 匿名内部类及其应用 匿名内部类细节 内部类概述 将一个类定义在另一个类的里面, 里面的那个类就称为内部类(内置类, 嵌套类). class Outer { ...

  4. python基础之类的编码风格

    自定义工作流程: 一开始应让代码结构尽可能简单.先尽可能在一个文件中完成所有的工作,确定一切都能正确运行后,再将类移动独立的模块中.如果你喜欢模块和文件的交互方式,可在项目开始时就尝试将类存储到模块中 ...

  5. jenkins 升级

    升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...

  6. django--博客--forms组件-用户注册

    ---------------------------------------------前端页面简易代码----------------------------------------------- ...

  7. django模板之导入与继承

    组件 母版 子模板继承 2.静态文件相关 {% load static %} <link rel=-dist/css/bootstrap.css %}> <link rel=&quo ...

  8. python基于yield实现协程

    def f1(): print(11) yield print(22) yield print(33) def f2(): print(55) yield print(66) yield print( ...

  9. MySQL数据库(3)- 完整性约束、外键的变种、单表查询

    一.完整性约束 在创建表时候,约束条件和数据类型的宽度都是可选参数. 作用:用于保证数据的完整性和一致性. 1.not null(不可空)与default 示例一:插入一个空值,如下: mysql&g ...

  10. 008-CentOS添加环境变量

    在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时, ...