Coursera-Applied Data Science with Python-Introduction to Data Science in Python-Week3

本文深入探讨Pandas中的数据操作,包括DataFrame的合并(merge)方法,详细解释了内外连接、左连接、右连接等不同方式。此外,文章还介绍了惯用的Pandas代码,如避免链式索引,利用apply和lambda表达式处理数据。接着讲解了Group by操作,以及如何使用agg函数进行聚合。文章还涵盖了数据的尺度概念,并展示了如何在不同尺度间转换。最后,简要讨论了Pandas中的日期和时间功能,如Timestamp、Period和DatetimeIndex。
摘要由CSDN通过智能技术生成

一、Merging Dataframes:    

    首先,我们先复习一下上周所学的内容,上周主要是学习了Pandas中两个核心的数据结构:一维结构的Series和二维结构的DataFrame。查询这两个数据结构中的值有两种方式:第一种是行查询(row-based querying),通过使用loc、iloc属性;第二张是列查询(column-based querying),通过使用方括号操作符("[]")完成。而且还学习了通过Boolean Masking 来过滤数据。


1.向已存在的DataFrame内添加列:


    通过之前的学习,我们已经知道了一种向DataFrame里添加数据的方式,即我们给带有新列名的方括号操作符赋值来达到这个目的。


    但是这种方法有个局限就是,要求进行赋值的列表的长度必须要和DataFrame的index的长度一样,换句话说就是要把DataFrame里每一行这属性的值交代清楚,否则就会出现错误:


        要注意的是,对于数值型数据(scalar value)例如,整数,字符串等等,上面的方法是可用的,具体地如下图所示:


    那么,如果我们想给某一列的不同位置赋不同的值,那就必须创建一个和DataFrame的index的长度一样的list,list的里按顺序存放希望的内容(包括缺失值missing value):


    如果,DataFrame里的每一行都有着唯一的索引,那么我们就可以通过索引给要添加的那列的具体位置赋值,这样做的好处就是可以不用自己填写缺失值。


2.合并DataFrame:

    使用Pandas里的merge函数能完成将两个DataFrame合并的操作,该方法的签名为:

    Pandas.merge(left,right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

        主要参数介绍:
        left:参与合并的左边的DataFrame(相当于SQL的join中的左表);
        right:参数合并的右边的DataFrame(相当于SQL的join中的右表);
        how:为合并的方式,分别为'inner','outer','left','right',默认为'inner'(相当于SQl中表连接的内连接、外链接、左链接和右连接,说白了就是:内连接是求交集;外连接是求并集;左连接是以左边的数据为准,查询出右边的数据;右连接则是反过来);
        on:两个DataFrame用户连接的列名,必须同时存在于两个DataFrame中,如果未指定则为两个表的交集作为连接键;
        left_on:左表用于连接的列(主要用户两个DataFrame不存在相同的列名时);
        right_on:右表用于连接的列;
        left_index:将左边的DataFrame的索引作为连接键;
        right_index:将右边的DataFrame的索引作为连接键;
        sort:根据连接键对合并的结果进行排序;

        suffixes:字符串的元组,用于追加于重叠列名的末尾,默认为(_x,_y)

    具体地我们通过代码来理解,先创建两个DateFrame

staff_df = pd.DataFrame([{'Name': 'Kelly', 'Role': 'Director of HR'},
                         {'Name': 'Sally', 'Role': 'Course liasion'},
                         {'Name': 'James', 'Role': 'Grader'}])
staff_df = staff_df.set_index('Name')
student_df = pd.DataFrame([{'Name': 'James', 'School': 'Business'},
                           {'Name': 'Mike', 'School': 'Law'},
                           {'Name': 'Sally', 'School': 'Engineering'}])
student_df = student_df.set_index('Name')

  a.连接情况一:外连接

pd.merge(staff_df, student_df, how='outer', left_index=True, right_index=True)

    这段代码的意思是,将staff_df和student_df进行外连接,将staff_df和student_df的索引作为连接键。最后得到的结果是:


  b.连接情况二:内连接

pd.merge(staff_df, student_df, how='inner', left_index=True, right_index=True)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值