03.pandas基础操作

3、pandas基础操作

1. pandas 介绍

1.1 为什么学习pandas

  • numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?
    • numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串, 时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!

什么是pandas?

  • 首先先来认识pandas中的两个常用的类
    • Series
    • DataFrame

2. Series 的简单使用

Series是一种类似与一维数组的对象,由下面两个部分组成:

  • values:一组数据(ndarray类型)
  • index:相关的数据索引标签

2.1 Series的创建方式

# 导入Series、pandas相关包
from pandas import Series

(1)由列表创建

s = Series(data=[1,2,3,'four'])
s
image.png

(2)由numpy数组创建

import numpy as np
s = Series(data=np.random.randint(0,100,size=(3,)))
s
image.png

(3)index 用来指定显示索引

s = Series(data=[1,2,3,'four'],index=['a','b','c','d'])
s
image.png

(4)使用字典创建

dic ={
    '语文':80,
    '数学':70,
    '英语':60
}
s = Series(data=dic)
s
image.png

2.2 Series索引的作用

(1)显示索引可以增强Series的可读行

(2)Series的索引和切片

# 查看隐式索引为0的行数据
s[0]
image.png
# 查看显示索引为'语文'的行数据
s.语文
image.png
# 查看0到2行的行数据
s[0:2]
image.png

2.3 Series的常用属性

(1)shape 查看Series形状

image.png

(2)size 查看Series的大小

image.png

(3)index 返回Series索引

image.png

(4)values 返回Series值

image.png

(5)dtype 返回元素类型

image.png

2.4 Series的常用方法

创建一个样本

s = Series(data=np.random.randint(60,100,size=(10,)))
s
image.png

(1)head()显示前N个数组 ,默认是5个

s.head()
image.png

(2)tail() 显示后n个

s.tail(3) #显示后n个
image.png

(3)unique() 去重

s.unique() #去重
image.png

(4)isnull() 判断每一个元素是否为空

s.isnull()  #判断每一个元素是否为空
image.png

(5)notnull() 判断每一个元素是否为非空

s.notnull()  #判断每一个元素是否为非空
image.png

2.5 Series 的算术运算

索引一致的元素进行算术运算,否则为空

s1 = Series(data=[1,2,3],index=['a','b','c'])
s2 = Series(data=[1,2,3],index=['a','d','c'])
s = s1 + s2
s
image.png

3. DataFrane的简单使用

DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从—维拓展到多维。DataFrame既有行索引,也有列索引。

  • 行索引 :index
  • 列索引: columns值: values

3.1 DataFrame的创建

# 导入DataFrame 模块
from pandas import DataFrame

(1)ndarray创建

df = DataFrame(data=np.random.randint(0,100,size=(6,4)))
df
image.png

(2)字典创建

dic ={
    'name':['a','d','c'],
    'age':[11,12,13]
}
df = DataFrame(data=dic,index=['a','b','c'])
df
image.png

3.2 DataFrame 的属性

(1)values 查看DataFrame 的值

df.values
image.png

(2)columns 查看DataFrame 的列索引

df.columns
image.png

(3)index 查看DataFrame 的行索引

df.index
image.png

(4)shape 查看DataFrame的形状

df.shape
image.png

3.3 练习

根据以下考试成绩表,创建一个DataFrame,命名为df:

张三 李四
语文 150 50
数学 150 50
英语 150 50
理综 150 50
dic ={
    '张三': [150,150,150,300],
    '李四': [0,0,0,0]
}
s = DataFrame(data=dic,index=['语文','数学','英语','理综'])
s
image.png

3.4 DataFrame索引操作

创建样本

df = DataFrame(data=np.random.randint(60,100,size=(8,4)),columns=['a','b','c','d'])
df
image.png

(1)对列进行索引取值

df['a']  #取单列,如果df有显示的索引,通过索引机制取行或者列的时候只可以使用显示索引
image.png

(2)取多列

df[['a','c']] #取多列
image.png

(3)iloc:通过隐式索引取行

#取单行
df.iloc[0]
image.png
# 取单列
df.iloc[:,0]
image.png
#取多行
df.iloc[[0,3,5]]
image.png
#取多列
df.iloc[:,[0,2,3]]
image.png
#取第0行第三列的数据
df.iloc[0,3]
image.png
#取多个元素
df.loc[[1,3,5],'c']
image.png

(4)loc:通过显示索引取行

#取单行
df.loc[:,'a']
image.png
#取多列
df.loc[:,['a','b']]
image.png
# 取多个元素
df.loc[[1,3,5],'c']
image.png

3.5 DataFrame的切片操作

(1)对行进行切片

df[0:3]
image.png

(2)对列进行切片

df.iloc[:,0:2]
image.png

(3)对行和列进行切片

df.iloc[0:2,0:2]
image.png

3. 6 总结:

  • df 索引和切片操作
    • 索引:
      • df[col]:取列
      • df.loc[index]:取列,显示索引
      • df.iloc[index]:取列,隐式索引
      • df.iloc[index,col]:取元素,隐式索引
    • 切片:
      • df[index1,index2]:切行
      • df.iloc[:,col1:col2]:切列

3.7 练习

要求:

1.假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值

2.假设张三期中考试数学被发现作弊,要记为0分,如何实现?

3.李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?

4.后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?

(1)创建数据结构

dic1 ={
    '张三':[100,100,100,100],
    '李四':[80,80,80,80]
}

dic2 ={
    '张三':[80,80,80,80],
    '李四':[100,100,100,100]
}

#期中
ddd = DataFrame(data=dic1,index=['语文','数学','英语','理综'])
#期末
ddd2 = DataFrame(data=dic2,index=['语文','数学','英语','理综'])

(2)计算期中期末的平均值

#总分
count = ddd + ddd2

#平均值
ave = count / 2
image.png

(3)张三期中考试数学被发现作弊,要记为0分

#张三期中考试数学记为0分
ddd.loc['数学','张三']=0
ddd
image.png

(4)将李四所有成绩加100

#将李四所有成绩加100
ddd.loc[:,'李四']+=100   #ddd['李四'] += 100
ddd
image.png

(5)给所有学生每个科目加10分

#给所有学生每个科目加10分
ddd.loc[:]+=10   # ddd += 10
ddd
image.png

3.8 时间数据类型的转换

  • pd.to_datetime(col) 时间数据类型的转换

(1)创建样本

import pandas as pd
dic = {
    'time':['2021-9-8','2021-8-8','2021-7-8'],
    'temp':[10,20,30]
}
df = DataFrame(data=dic)
df
image.png

(2)查看time列的类型

#查看time列的类型  字符串类型
df['time'].dtype
image.png

(3)将time列转为时间类型

df['time'] = pd.to_datetime(df['time'])
df
image.png
  • 将time列作为原数据的行索引 inplace是否覆盖原df
df.set_index('time',inplace=True)
df
image.png

版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/57732.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>