热点新闻
03.pandas基础操作
2023-07-12 09:37  浏览:1038  搜索引擎搜索“手机财发网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在手机财发网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

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

发布人:1c5b****    IP:117.173.23.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发