数据分析- pandas基本操作

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列
原文地址:https://www.cnblogs.com/zhangdadayou/p/12026045.html