一、基本概念
pandas 是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一
二、常见的数据结构
1. Series
一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。Series如今能保存不同种数据类型,字符串、boolean值、数字等都能保存在Series中
2. DataFrame
二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。
三、库的导入
库名:pandas库
别名:pd
import pandas as pd
from pandas import Series, DataFrame
四、Series
类型:类似于ndarray类型 行索引:index 索引对应的数据:values 主要包含:Series的创建、Series的操作方法、Series的常用方法、Series的算数运算
1、Series的创建
小编思路:
` 创建方法有三种:列表,字典,numpy
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
1.1 由列表创建
Series( data= [ 1 , 2 , 3 ] , index= [ 'a' , 'b' , 'c' ] )
————————————————
a 1
b 2
c 3
dtype: int64
1.2 由字典创建
Series( data= { '1' : 2 , '2' : 3 } )
————————————————
1 2
2 3
dtype: int64
1.3 由numpy创建
Series( data= np. random. randint( 1 , 10 , 6 ) )
————————————————
0 9
1 1
2 3
3 4
4 3
5 4
dtype: int32
2、Series的操作:索引和切片
小编思路:
`显式索引:自己直接规定的index(比如下面创建Series:[‘a’,'b','c'])
`隐式索引:系统分配的index([1,2,3])
注意:自己设置的索引不会覆盖隐形索引
s = Series( data= [ 1 , 2 , 3 ] , index= [ 'a' , 'b' , 'c' ] )
- - - - - - - - - - - - -
a 1
b 2
c 3
dtype: int64
2.1 索引
s[ 'a' ]
s[ 0 ]
- - - - - - - - -
1
1
2.2 切片
s[ 0 : 2 ]
- - - - - - - - - -
a 1
b 2
dtype: int64
s[ 0 : 3 : 2 ]
- - - - - - - - - -
a 1
c 3
dtype: int64
2.3 返回索引
s. index
- - - - - - - - -
Index( [ 'a' , 'b' , 'c' ] , dtype= 'object' )
2.4 返回索引值
s. values
- - - - - - - - -
array( [ 1 , 2 , 3 ] , dtype= int64)
3、Series的常用方法
小编思路:
`三种常用方法:数据显示,数据去重,数据空值检验
3.1 显示前2个元素
s. head( 2 )
- - - - - - - - - - -
a 1
b 2
dtype: int64
3.2 显示后2个元素
s. tail( 2 )
- - - - - - - - - - - - -
b 2
c 3
dtype: int64
3.3 数据去重
s1 = Series( data= [ 1 , 1 , 1 , 23 , 44 , 34 , 23 ] )
s1. unique( )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
array( [ 1 , 23 , 44 , 34 ] , dtype= int64)
3.4 数据去重之后返回的个数
s1. nunique( )
- - - - - - - - - - - - - - - -
4
3.5 检查元素是否为空
s1. isnull( )
- - - - - - - - - - -
0 False
1 False
2 False
3 False
4 False
5 False
6 False
dtype: bool
3.6 检查元素是否为非空
s1. notnull( )
- - - - - - - - - - - - -
0 True
1 True
2 True
3 True
4 True
5 True
6 True
dtype: bool
4、Series的算术运算
s1 = Series( data= [ 1 , 2 , 3 ] , index= [ 'a' , 'b' , 'c' ] )
s2 = Series( data= [ 1 , 2 , 3 ] , index= [ 'a' , 'c' , 'd' ] )
s1+ s2
- - - - - - - - - - - - - - -
a 2.0
b NaN
c 5.0
d NaN
dtype: float64
五、DataFrame
表格类型的数据(二维的数据) index行索引;columns列索引;values值 主要包含:DataFrame创建方法,DataFrame的属性,DataFrame的索引和切片,DataFrame的运算
1、DataFrame创建方法
小编思路:
`创建方法:二维列表方式,字典方式,numpy,
1.1 以二维列表方式创建
DataFrame( data= [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] , index= [ '1' , '0' ] )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1.2 以字典方式创建
dic = {
'1' : 'la' ,
'2' : 'lq' ,
'3' : 'lw' }
DataFrame( dic, index= [ '名字' ] )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1.3 numpy创建
df = DataFrame( data= np. random. randint( 0 , 100 , ( 3 , 2 ) ) , index= [ 'a' , 'b' , 'c' ] , columns= [ 'A' , 'B' ] )
df
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2、DataFrame的属性
小编思路:
`属性:值,索引,返回类型
2.1 返回值
df. values
- - - - - - - - - - - - - -
array( [ [ 72 , 3 ] ,
[ 98 , 26 ] ,
[ 41 , 5 ] ] )
2.2返回行索引
df. index
- - - - - - - - - - - - - - -
Index( [ 'a' , 'b' , 'c' ] , dtype= 'object' )
2.3返回列索引
df. columns
- - - - - - - - - - - - - - - -
Index( [ 'A' , 'B' ] , dtype= 'object' )
2.4返回类型
df. shape
- - - - - - - - - - - - - - - -
( 3 , 2 )
3、DataFrame的索引
小编思路:
`对行、列进行索引,使用索引取出元素
da= DataFrame( data= [ [ 150 , 0 ] , [ 150 , 0 ] , [ 150 , 0 ] , [ 300 , 0 ] ] , index= [ '语文' , '数学' , '英语' , '理科' ] , columns= [ '张三' , '李四' ] )
da
张三 李四 语文 150 0 数学 150 0 英语 150 0 理科 300 0
3.1 对列进行索引
da[ '张三' ]
da. iloc[ : , 0 ]
同样结果- - - - - - - - - - - - - - - - - - - - - - - -
语文 150
数学 150
英语 150
理科 300
Name: 张三, dtype: int64
3.2 对行进行索引
da. loc[ '语文' ]
da. iloc[ 0 ]
同样结果- - - - - - - - - - - - - - - - - -
张三 150
李四 0
Name: 语文, dtype: int64
3.3 取元素
da. loc[ '语文' , '张三' ]
- - - - - - - - - - - - - - - - - - - -
150
da. iloc[ 0 , 0 ]
- - - - - - - - - - - - - - - - - - - -
150
da. iloc[ [ 0 , 1 ] , 0 ]
- - - - - - - - - - - - - - - - - - - - - - -
语文 150
数学 150
Name: 张三, dtype: int64
4、DataFrame的切片
小编思路:
`对行、列进行切片
4.1 切行
da[ 0 : 2 ]
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2 切列
da. iloc[ : , 0 : 1 ]
- - - - - - - - - - - - - - - - - - - - - - - -
5、DataFrame的运算
ddd = {
'job' : [ 94 , 90 , 90 , 91 ] ,
'bob' : [ 65 , 56 , 86 , 87 ] ,
'li' : [ 87 , 98 , 98 , 78 ]
}
dd = DataFrame( ddd, index= [ '语文' , '数学' , '英语' , '体育' ] )
dd
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
job bob li 语文 94 65 87 数学 90 56 98 英语 90 86 98 体育 91 87 78
ddf = {
'job' : [ 84 , 98 , 90 , 91 ] ,
'bob' : [ 65 , 89 , 86 , 87 ] ,
'li' : [ 87 , 98 , 76 , 90 ]
}
ss = DataFrame( ddf, index= [ '语文' , '数学' , '英语' , '体育' ] )
ss
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
job bob li 语文 84 65 87 数学 98 89 98 英语 90 86 76 体育 91 87 90
5.1 求期中期末平均值
ff= dd + ss
ff/ 2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
job bob li 语文 89.0 65.0 87.0 数学 94.0 72.5 98.0 英语 90.0 86.0 87.0 体育 91.0 87.0 84.0
5.2 job的期末数学分数变成0
ss. iloc[ 1 , 0 ] = 0
ss
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
job bob li 语文 84 70 87 数学 0 94 98 英语 90 91 76 体育 91 92 90
5.3 bob所有的分数加五分
ss. iloc[ : , 1 ] += 5
ss
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
job bob li 语文 84 75 87 数学 0 99 98 英语 90 96 76 体育 91 97 90
好了,今天pandas的基础知识先学到这里啦,记得关注小编学习下一篇我们将会涉及pandas相对高级的用法,每天进步一点点。喜欢这篇文章记得点赞评论呀!!!
另外附上之前numpy的学习笔记的链接:
python数据分析学习笔记:numpy .