pandas 切片_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)

一、为什么学习pandas

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

二、什么是pandas?

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

1.Series的创建

  • 由列表或numpy数组创建
  • 由字典创建
 
  1. #series只能创建一维数组

  2. import numpy as np

  3. import pandas as pd

  4. from pandas import Series,DataFrame

  5. #使用列表创建数组

  6. s=Series(data=[1,2,3,4,5])

  7. s

4b2b10ef9cdc28a264183ccc2dc09855.png

 
  1. #numpy数组创建

  2. s1=Series(data=np.random.randint(1,100,size=(2,)))

  3. s1

825c6801679818c7f26408fc145386d6.png

Series(data=[1,2,3],index=['a','b','c'])#index是用来指定显示索引,显示索引不会覆盖隐示索引

c21374d30ac9edd02119eab38d1f9da6.png

1.2.Series的索引和切片

 
  1. s = Series(data=[1,2,3,4,5],index=['a','b','c','d','e'])

  2. s

c789fc68938bc49d41a407ca803bf75f.png

 
  1. #索引操作

  2. s = Series(data=[1,2,3,4,5],index=['a','b','c','d','e'])

  3. print(s[0])#查找索引为0的元素

  4. print(s['a'])#查找索引为0的元素

  5. print(s.a)

  6. print(s[[1,2]])#查找索引为0的元素

391a98cbb678c3aa1f8f57b9cc49a0af.png

 
  1. #切片

  2. s[0:3]

  3. s['a':'c']

f4ee6e8bdd413c51dc4ee6697b817b30.png

1.3.Series的常用属性

  • shape
  • size
  • index
  • values
 
  1. print(s.shape)

  2. print(s.size)

  3. print(s.index)

  4. print(s.values)

abd78c6de735eda27b556221e7d59c67.png

1.4.Series的常用方法

  • head(),tail()
  • unique()
  • isnull(),notnull()
  • add() sub() mul() div()
 
  1. s.head(2)#显示前n个元素

  2. s.tail(2)#后n个元素

1972f96e728d2d5284f0523ea44fe5eb.png

 
  1. s = Series(data=[1,1,2,2,3,4,5])

  2. s.unique()#去重

1004cfed7734a58c8001c2223089ebd9.png

s.nunique() #返回去重之后元素的个数

237e86c27922e8b30b16ad54e44a5617.png

s.isnull() #isnull使用来检测元素是否为空

5164879211f399c8e656ae282b7fc465.png

s.notnull()#用来检测元素是否为非空

1c26f6c433ee139f422a32e4dfdb3f2f.png

 
  1. #add()为例

  2. a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])

  3. b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])

  4. a.add(b, fill_value=0)

  5. print(a)

  6. print(b)

  7. print(a.add(b,fill_value=0))

100259b836d99520d964706a405d4577.png

1.5.Series的算术运算

  • 法则:索引一致的元素进行算数运算否则补空
 
  1. s1 = Series(data=[1,2,3],index=['a','b','c'])

  2. s2 = Series(data=[1,2,3],index=['a','d','c'])

  3. s = s1+s2

  4. s

801dccb156961719b43ffa48cb7c4f44.png

s.isnull()

4848302717786b42d0d0958397994a7b.png

s.notnull()

dbf7b4b5358a9db089e2825d96327a17.png

2.DataFrame

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

2.1DataFrame的创建

    • ndarray创建
    • 字典创建
 
  1. #ndarray创建

  2. import numpy as np

  3. import pandas as pd

  4. from pandas import Series,DataFrame

  5. df=DataFrame(np.array([[1,2,33],[6,4,8]]))

  6. df

  7. #或者DataFrame(data=[[1,2,33],[6,4,8]])

44d698e8ad790fa035fd5b317b6895fa.png

 
  1. #使用元祖创建

  2. dic = {

  3. 'name':['tom','jay','salay'],

  4. 'salary':[10000,2000,15000]

  5. }

  6. DataFrame(dic)

7562e196ebdc266d74097d1368a1e428.png

 
  1. df =DataFrame(data=np.random.randint(0,100,size=(3,2)),index=['a','b','c'],columns=['A','B'])

  2. df

25cec20aab701a12d37f1fcde380f0ec.png

2.2DataFrame的属性

  • values、columns、index、shape
 
  1. print(df.values)

  2. print(df.columns)

  3. print(df.index)

  4. print(df.shape)

aad9f4bd1e88ecb65ebe859ce31b4096.png

练习1:

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

 
  1. 张三 李四

  2. 语文 150 0

  3. 数学 150 0

  4. 英语 150 0

  5. 理综 300 0

代码

 
  1. import numpy as np

  2. import pandas as pd

  3. from pandas import Series,DataFrame

  4. df=DataFrame(data=[[150,0],[150,0],[150,0],[300,0]],columns=['张三','李四'],index=['语文','数学','英语','理综'])

  5. df

79716a786917abdd339b3c6335cbcfa9.png

2.3DataFrame索引操作(*重点)

  • 对行进行索引
  • 队列进行索引
  • 对元素进行索引
 
  1. df = DataFrame(data=np.random.randint(0,100,size=(5,4)),columns=['a','b','c','d'],index=['A','B','C','D','E'])

  2. df

c9044134956e900c035bf0b4377978cb.png

 
  1. #索引取列

  2. df['a']#显示索引取列

  3. df.iloc[:,0] #隐式索引取列

  4. df.a

8048ceae5957efb5589be684d8598d0e.png

 
  1. #取行

  2. df.iloc[0] #隐式索引取行

  3. df.loc['A'] #显示索引取行

82e51316813737fc115843ac6e52e456.png

  • iloc:
    • 通过隐式索引取行
  • loc:
    • 通过显示索引取行
 
  1. #取元素

  2. df.loc['B','b']

  3. df.iloc[1,1]

  4. df.iloc[[0,1],2]

00dbee091f1ca65c140188c884caca25.png

2.4DataFrame的切片操作

  • 对行进行切片
  • 对列进行切片
 
  1. #切行

  2. df[0:2]

2206f0877014887a9597e5605b8b46e7.png

 
  1. #切列

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

1edea5a127b5e28224274986e6ef5534.png

总结:

  • df索引和切片操作
    • 索引:
      • df[col]:取列
      • df.loc[index]:取行
      • df.iloc[index,col]:取元素
    • 切片:
      • df[index1:index3]:切行
      • df.iloc[:,col1:col3]:切列

2.5DataFrame的运算

  • 同Series

练习2:

  1. 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
  2. 假设张三期中考试数学被发现作弊,要记为0分,如何实现?
  3. 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
  4. 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
 
  1. #先建表,期中ddd和期末ddd2两张表

  2. import pandas

  3. from pandas import Series,DataFrame

  4. dic={

  5. '张三':[150,150,150,300],

  6. '李四':[0,0,0,0],

  7. '王五':[120,97,114,130]

  8. }

  9. df=DataFrame(data=dic,index=['语文','数学','英语','理综'])

  10. ddd=df

  11. ddd2=df

  12. print(ddd)

  13. print(ddd2)

cfacbfdced5cdda3b591bef29c2399b5.png

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

  2. (ddd+ddd2)/2

5f52f044ffcbf998aa3a06e2cf68c409.png

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

  2. #先找到ddd中数学-张三成绩,然后再赋值为0

  3. ddd.loc['数学','张三']=0

  4. ddd.loc['数学','张三']

21704ca72d7f9045a85d76d23d6e2360.png

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

  2. #找到ddd表中李四的所有成绩(列),然后+100

  3. ddd['李四']+=100

  4. ddd['李四']

e0ee41277313586695a3d94248aa5f39.png

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

  2. ddd+=10

  3. ddd

d217e3ce2a5ab5264e3b2dae1d62dee8.png

相关资源:Pandas学习笔记1-Pandas基础-其它代码类资源-CSDN文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值