前言
那么问题来了:numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢?
numpy能够帮我们处理处理数值型数据,但是这还不够
很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等
比如:我们通过爬虫获取到了存储在数据库中的数据
比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等
numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据
一、pandas是什么?
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.
二、pandas的常用数据类型
1.Series 一维,带标签数组
pandas之Series创建
import pandas as pd
t=pd.Series([1,2,31,12,3,4])
type(t)
对于一个陌生的series类型,我们如何知道他的索引和具体的值呢?
2.pandas之读取外部数据
和我们想象的有些差别,我们以为他会是一个Series类型,但是他是一个DataFrame,那么接下来我们就来了解这种数据类
但是,还有一个问题:对于数据库比如mysql或者mongodb中数据我们如何使用呢?
pd.read_sql(sql_sentence,connection)
那么,mongodb呢?
3.pandas之DataFrame
DataFrame对象既有行索引,又有列索引
行索引,表明不同行,横向索引,叫index,0轴,axis=0
列索引,表名不同列,纵向索引,叫columns,1轴,axis=1
![](https://i-blog.csdnimg.cn/blog_migrate/94d630f08be10d978c33af459ef9c9f5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fea72c6f82e1fe7f92baecf93a237a2c.png)
那么回到之前我们读取的狗名字统计的数据上,我们尝试一下刚刚的方法
那么问题来了:很多同学肯定想知道使用次数最高的前几个名字是什么呢?
df.sort_values(by="Count_AnimalName",ascending=False)
那么问题又来了:如果我的数据有10列,我想按照其中的第1,第3,第8列排序,怎么办?(看ipythpn的帮助文档)
还有更多的经过pandas优化过的选择方式:
1.df.loc 通过标签索引行数据
2.df.iloc 通过位置获取行数据
4.pandas之布尔索引
回到之前狗的名字的问题上,假如我们想找到所有的使用次数超过800的狗的名字,应该怎么选择?
5.pandas之字符串方法
6.pandas缺失值处理
我们的数据缺失通常有两种情况:
一种就是空,None等,在pandas是NaN(和np.nan一样)
另一种是我们让其为0
判断数据是否为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)
处理为0的数据:t[t==0]=np.nan
当然并不是每次为0的数据都需要处理,计算平均值等情况,nan是不参与计算的,但是0会
7.pandas常用统计方法
对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?