• 全国 [切换]
  • 二维码
    财发网

    手机WAP版

    手机也能找商机,信息同步6大终端平台!

    微信小程序

    微信公众号

    当前位置: 首页 » 行业新闻 » 热点新闻 » 正文

    03.pandas基础操作

    放大字体  缩小字体 发布日期:2020-01-14 09:37:41   浏览次数:1204  发布人:1c5b****  IP:117.173.23.***  评论:0
    导读

    3、pandas基础操作 1. pandas 介绍 1.1 为什么学习pandasnumpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串, 时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!什么是pandas?首先先来认识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

    不推荐电脑端访问(用户少)
    请微信扫一扫,查看完整信息(记得微信收藏)
     
    (文/匿名(若涉版权问题请联系我们核实发布者) / 非法信息举报 / 删稿)
    打赏
    免责声明
    • 
    本文为昵称为 1c5b**** 发布的作品,本文仅代表发布者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,发布者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们154208694@qq.com删除,我们积极做(权利人与发布者之间的调停者)中立处理。郑重说明:不 违规举报 视为放弃权利,本站不承担任何责任!
    有个别老鼠屎以营利为目的遇到侵权情况但不联系本站或自己发布违规信息然后直接向本站索取高额赔偿等情况,本站一概以诈骗报警处理,曾经有1例诈骗分子已经绳之以法,本站本着公平公正的原则,若遇 违规举报 我们100%在3个工作日内处理!
    0 条相关评论
     

    (c)2008-现在 c8f.com All Rights Reserved.