欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...

发布时间:2025/4/16 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、为什么学习pandas

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

二、什么是pandas?

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

1.Series的创建

  • 由列表或numpy数组创建
  • 由字典创建
#series只能创建一维数组 import numpy as np import pandas as pd from pandas import Series,DataFrame#使用列表创建数组 s=Series(data=[1,2,3,4,5]) s

#numpy数组创建 s1=Series(data=np.random.randint(1,100,size=(2,))) s1

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

1.2.Series的索引和切片

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

#索引操作 s = Series(data=[1,2,3,4,5],index=['a','b','c','d','e']) print(s[0])#查找索引为0的元素 print(s['a'])#查找索引为0的元素 print(s.a) print(s[[1,2]])#查找索引为0的元素

#切片 s[0:3] s['a':'c']

1.3.Series的常用属性

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

1.4.Series的常用方法

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

s = Series(data=[1,1,2,2,3,4,5]) s.unique()#去重

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

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

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

#add()为例 a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd']) b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e']) a.add(b, fill_value=0) print(a) print(b) print(a.add(b,fill_value=0))

1.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

s.isnull()

s.notnull()

2.DataFrame

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

2.1DataFrame的创建

    • ndarray创建
    • 字典创建
#ndarray创建 import numpy as np import pandas as pd from pandas import Series,DataFrame df=DataFrame(np.array([[1,2,33],[6,4,8]])) df#或者DataFrame(data=[[1,2,33],[6,4,8]])

#使用元祖创建 dic = {'name':['tom','jay','salay'],'salary':[10000,2000,15000] } DataFrame(dic)

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

2.2DataFrame的属性

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

练习1:

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

张三 李四 语文 150 0 数学 150 0 英语 150 0 理综 300 0

代码

import numpy as np import pandas as pd from pandas import Series,DataFrame df=DataFrame(data=[[150,0],[150,0],[150,0],[300,0]],columns=['张三','李四'],index=['语文','数学','英语','理综']) df

2.3DataFrame索引操作(*重点)

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

#索引取列 df['a']#显示索引取列 df.iloc[:,0] #隐式索引取列 df.a

#取行 df.iloc[0] #隐式索引取行 df.loc['A'] #显示索引取行

  • iloc:
    • 通过隐式索引取行
  • loc:
    • 通过显示索引取行
#取元素 df.loc['B','b'] df.iloc[1,1] df.iloc[[0,1],2]

2.4DataFrame的切片操作

  • 对行进行切片
  • 对列进行切片
#切行 df[0:2]

#切列 df.iloc[:,0:2]

总结:

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

2.5DataFrame的运算

  • 同Series

练习2:

  • 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
  • 假设张三期中考试数学被发现作弊,要记为0分,如何实现?
  • 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
  • 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
  • #先建表,期中ddd和期末ddd2两张表 import pandas from pandas import Series,DataFrame dic={'张三':[150,150,150,300],'李四':[0,0,0,0],'王五':[120,97,114,130] } df=DataFrame(data=dic,index=['语文','数学','英语','理综']) ddd=df ddd2=df print(ddd) print(ddd2)

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

    #2.假设张三期中考试数学被发现作弊,要记为0分,如何实现? #先找到ddd中数学-张三成绩,然后再赋值为0 ddd.loc['数学','张三']=0 ddd.loc['数学','张三']

    #3.李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现? #找到ddd表中李四的所有成绩(列),然后+100 ddd['李四']+=100 ddd['李四']

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

    总结

    以上是生活随笔为你收集整理的dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。