机器学习-数据科学库第四天——笔记

为什么要学习pandas

numpy能够帮我们处理处理数值型数据,但是这还不够
很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等

  • 比如:我们通过爬虫获取到了存储在数据库中的数据
  • 比如:之前youtube的例子中除了数值之外还有国家的信息,
  • 视频的分类(tag)信息,标题信息等

所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据

pandas的常用数据类型

1.Series 一维,带标签数组
2.DataFrame 二维,Series容器

pandas之Series创建

在这里插入图片描述
在这里插入图片描述

pandas之Series的索引和值

在这里插入图片描述
在这里插入图片描述

pandas之读取外部数据

我们的这组数据存在csv中,我们直接使用pd. read_csv即可
和我们想象的有些差别,我们以为他会是一个Series类型,但是他是一个DataFrame,那么接下来我们就来了解这种数据类型

pandas之DataFrame

DataFrame对象既有行索引,又有列索引
行索引,表明不同行,横向索引,叫index,0轴,axis=0
列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

Series能够传入字典,那么DataFrame能够传入字典作为数据么?那么mongodb的数据是不是也可以这样传入呢?
在这里插入图片描述
在这里插入图片描述

和一个ndarray一样,我们通过shape,ndim,dtype了解这个ndarray的基本信息,那么对于DataFrame我们有什么方法了解呢

DataFrame的基础属性

在这里插入图片描述
在这里插入图片描述

那么回到之前我们读取的狗名字统计的数据上,我们尝试一下刚刚的方法

import pandas as pd
df = pd.read_csv("./dogNames2.csv")
df = df.sort_values(by="Count_AnimalName",ascending=False)
#pandas取行或者列的注意点
!](https://img-blog.csdnimg.cn/e232abf73e3a45a9bac689ff6723098c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc2hlbum6kw==,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)
# - 方括号写数组,表示取行,对行进行操作
# - 写字符串,表示的去列索引,对列进行操作
print(df[:20])
print(df["Row_Labels"])
print(type(df["Row_Labels"]))

在这里插入图片描述

pandas之loc

还有更多的经过pandas优化过的选择方式:
1.df.loc 通过标签索引行数据
2.df.iloc 通过位置获取行数据
在这里插入图片描述
在这里插入图片描述

现在假设我们有一个组关于狗的名字的统计数据,假如我们想找到所有的使用次数超过700并且名字的字符串的长度大于4的狗的名字,应该怎么选择?

import pandas as pd
#pandas读取csv中的文件
df = pd.read_csv("./dogNames2.csv")
print(df[(800<df["Count_AnimalName"])|(df["Count_AnimalName"]<1000)])

在这里插入图片描述

缺失数据的处理

对于NaN的数据,在numpy中我们是如何处理的?
在pandas中我们处理起来非常容易
=判断数据是否为NaN:pd.isnull(df),pd.notnull(df)
处理方式1:删除NaN所在的行列dropna (axis=0, how=‘any’, inplace=False)
处理方式2:填充数据,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)
=
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【动手】对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?

import pandas as pd
from matplotlib import pyplot as plt
file_path = "./IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
#print(df.head(1))
#print(df.info())
#分布情况
#选择图形,直方图
#准备数据
runtime_data = df["Runtime (Minutes)"].values
max_runtime = runtime_data.max()
min_runtime = runtime_data.min()
#计算组数
print(max_runtime-min_runtime)
num_bin = (max_runtime-min_runtime)//5
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.hist(runtime_data,num_bin)
plt.xticks(range(min_runtime,max_runtime+5,5))
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值