1. pandas基本操作
1.为什么学习pandas
numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?
numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!
2. 什么是pandas?
- 首先先来认识pandas中的两个常用的类
Series
DataFrame
3. Series
简介
Series是一种类似与一维数组的对象,由下面两个部分组成:
values:一组数据(ndarray类型)
index:相关的数据索引标签
Series的创建
由列表活numpy数组创建
由字典创建
Series使用
# Series得索引
#隐式索引:数值型
#显式所用:自定义(字符串)
#提高数据得可读性
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
#Series这个数据结构中存储的数据一定得是一个维度
s1 = Series(data=[1,2,3,4,5])
s2 = Series(data=np.random.randint(0,100,size(4,)))
dic ={
'a':1,
'b':2,
'c':3
}
#Series得索引可以为字符串
s3 = Series(data=dic)
#index指定显式索引
s4 = Series(data=[1,2,3],index=['数学','英语','理综'])
#s1
0 1
1 2
2 3
3 4
4 5
dtype: int64
#s3
a 1
b 2
c 3
dtype: int64
#s4
数学 1
英语 2
理综 3
dtype: int64
Series得索引和切片
索引
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
#index指定显式索引
s4 = Series(data=[1,2,3],index=['数学','英语','理综'])
s4[0] #输出结果 1
s4['数学'] #输出结果1
s4.数学 #输出结果1
切片
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
#index指定显式索引
s4 = Series(data=[1,2,3],index=['数学','英语','理综'])
s4[0:2]
#输出结果
数学 1
英语 2
dtype: int64
Series得常用属性
- shape 数组形状
- size 数组长度
- index 数组下标
- values 数组值
Series的常用方法
- head(),tail()
- unique()
- isnull(),notnull()
- add() sub() mul() div()
Series数据显示和去重
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
#index指定显式索引
s4 = Series(data=[1,2,3],index=['数学','英语','理综'])
s4.head(2) # 显示前n条数据
s4.tail(2) # 显示后n条数据
s= Series(data=[1,1,2,2,3,4,5,6,6])
s.unique() # 对Series进行去重
Series的算数运算
索引与之匹配的值进行算数运算,否则补空
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
s = Series(data=[1,1,2,2,3,4,5,6,6,6,6,6,6,7,8])
s+s
s.add(s)
s1 = Series(data=[1,2,3,4])
s2 = Series(data=[5,6,7])
s1 + s2
# 输出结果
0 6.0
1 8.0
2 10.0
3 NaN
dtype: float64
# 清洗Series中的空值
s1 = Series(data=[1,2,3,4],index=['a','b','c','e'])
s2 = Series(data=[1,2,3,4],index=['a','d','c','f'])
s = s1 + s2
s
# 输出结果
a 2.0
b NaN
c 6.0
d NaN
e NaN
f NaN
dtype: float64
# boolean可以作为索引取值
s1[[True,False,True,False]]
# 输出结果
a 1
c 3
dtype: int64
# 将符合清洗要求的布尔值获取
s.isnull()
# 输出结果
a False
b True
c False
d True
e True
f True
dtype: bool
s.notnull()
#输出结果
a True
b False
c True
d False
e False
f False
dtype: bool
# NAN的清洗
s[s.notnull()]
# 输出结果
a 2.0
c 6.0
dtype: float64
DataFrame
1.简介
DataFrame是一个[表格型]的数据结构。DataFrame由按一定顺序排列多列数据组成。设计初衷是将Series的使用场景从一维扩展到多维。DataFrame既有行索引,也有列索引
- 行索引:index
- 列索引:columns
- 值:values
2.DataFrame的创建
numpy 创建
字典创建
3.DataFrame的使用
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
df = DataFrame(data = np.random.randint(0,100,size(5,6)))
df
# 输出结果
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
dic = {
'name':['tome','jay','bobo'],
'salary':[10000,15000,10000]
}
df = DataFrame(data=dic,index=['a','b','c']) # 指定行索引
df
# 输出结果
4. DataFrame的属性
values、columns、index、shape
df.values#输出DataFrame值
df.shape# 输出DataFrame形状
df.index #输出DataFrame的行索引值
df.columns #输出DataFrame的列索引值
5.DataFrame索引操作
1.对行进行索引
import pandas as pd
from pandas import Series,DataFrame
from numpy import np
dic = {
'name':['tome','jay','bobo'],
'salary':[10000,15000,10000]
}
df = DataFrame(data=dic,index=['a','b','c']) # 指定行索引
# 索引取单行
df.loc['a']
df.iloc[0]
# 索引取多行
df.loc[['a','c']]
df.iloc[[0,2]]
2.对列进行索引
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
dic = {
'name':['tome','jay','bobo'],
'salary':[10000,15000,10000]
}
df = DataFrame(data=dic,index=['a','b','c']) # 指定行索引
#索引取单列
df['name']
#索引取多列
df[['salary','name']]
3.对元素进行索引
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
dic = {
'name':['tome','jay','bobo'],
'salary':[10000,15000,10000]
}
df = DataFrame(data=dic,index=['a','b','c']) # 指定行索引
# 取当个元素
df.iloc[1,1]
df.loc['b','salary']
# 取出多个元素值
df.loc[['b','c'],'salary']
df.iloc[[1,2],1]
6. DataFrame切片操作
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
dic = {
'name':['tome','jay','bobo'],
'salary':[10000,15000,10000]
}
df = DataFrame(data=dic,index=['a','b','c']) # 指定行索引
# 切行
df[0:2]
# 切列
df.iloc[:,0:2]
7. DataFrame的运算
和Series是一样
元素对应的行列索引保持一致,则元素间可以进行算数运算,否则补空
8. 时间数据类型的转换
# pd.to_datatime(col)
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
dic ={
'time':['2019-01-09','2011-11,11','2018-09-22'],
'salary':[1111,222,333]
}
df =DataFrame(data=dic)
df
#查看df的数据的数据类型
df.dtypes
#输出结果
salary int64
time object
dtype: object
#将time列转换成时间序列类型
df['time'] = pd.to_datetime(df['time'])
df
# 查看数据类型
df.dtypes
# 输出结果
salary int64
time datetime64[ns]
dtype: object
9.将某一列设置为行索引
# df.set_index()
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
dic ={
'time':['2019-01-09','2011-11,11','2018-09-22'],
'salary':[1111,222,333]
}
df =DataFrame(data=dic)
#将time这一列作为原数据的行索引
df.set_index(df['time'],inplace=True)
df.drop(labels='time',axis=1,inplace=True) #drop函数中axis的0行,1列