{DAY 17} Pandas 学习笔记part.3

前言

Pandas 是强大的资料科学分析工具,

今天要进入DataFrame的介绍

首先简介Dataframe

又可以称作资料框架,是表格型的资料结构

我们生活中常见的类似例子为Excel表格

可以想成DataFrame是Pandas里的Excel表格

实际上是由多个 Series 组合起来的资料结构

通常用来封装、处理二维的资料

今天练习的分别是

  1. 建立DataFrame
  2. 取得特定资料

看的课程是Coursera上的 Introduction to Data Science in Python

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera

下面的练习是利用上课教的还有以前在学校教过的

重新整理有关DataFrame的笔记

建立DataFrame

  • 首先先利用 Series来建立 Dataframe,看看Dataframe的架构

    假设现在想建立顾客档案,先利用Series建立每个顾客的名字、居住的城市跟年龄

    import pandas as pd
    
    n_1 = pd.Series({"Name":"Sunny","City":"Taipei","Age":"18"})
    n_2 = pd.Series({"Name":"Kevin","City":"Taipei","Age":"21"})
    n_3 = pd.Series({"Name":"Pennt","City":"Hsinchie","Age":"24"})
    

    再把每个顾客的资讯利用 Series做出来之後,转换成Dataframe的形式,并且指定index

    df = pd.DataFrame([n_1,n_2,n_3], index = ["customer1","customer2","customer3"])
    df.head()
    

    来检查变成DataFrame之後的形式


    可以看到DataFrame将资料排列的很好解读,二维的架构就跟前几周在SQL介绍的一样

  • 接下来来换另外一种生成DataFrame的方式,使用Dictionary的形式产生

    customers = [{"Name":"Sunny","City":"Taipei","Age":"18"},
                {"Name":"Kevin","City":"Taipei","Age":"21"},
                {"Name":"Ray","City":"Hsinchiu","Age":"24"}]
    df = pd.DataFrame(customers,index = ["customer1","customer2","customer3"])
    df.head()
    

取得特定资料

1. 要取出想要的row资料时

在DataFrame我们使用的方法跟在Series一样,可以用`iloc.[ ]`, `loc[ ]`
  • 如果index只输入单一值而且该值属於唯一值,就会回传该row的所有资料

    假设现在想找出顾客2的所有资讯

    可以用.loc[ ],使用栏位名称查询

    df.loc["customer2"]
    

    可以看到显示出来有关顾客2Kevin的所有资料

    现在来检查这个回传的资料型态是什麽

    type(df.loc["customer2"])
    '''
    pandas.core.series.Series
    '''
    

    可以确定若是输入的index是单一值而且该值属於唯一值

    回传的资料就会是Series的型态

    也可以使用ioc.[ ],利用索引值找到同样的顾客二资讯

    df.iloc[1]
    

  • 如果index在资料表里不是唯一值

    现在假设原始资料的顾客四输入时出现差错

    将第四位客人的index写成第一位客人

    让新的资料表里标示为第一位客人的资料有两笔

    customers_1 = [{"Name":"Sunny","City":"Taipei","Age":"18"},
                {"Name":"Kevin","City":"Taipei","Age":"21"},
                {"Name":"Ray","City":"Hsinchiu","Age":"24"},
                {"Name":"Jane","City":"Taichung","Age":"27"}]
    df_1 = pd.DataFrame(customers_1,index = ["customer1","customer2","customer3","customer1"])
    df_1.head()
    

    接下来试着找出有关customer1的资料

    并且检查回传的资料型态

    df_1.loc["customer1"]
    

    type(df_1.loc["customer1"])
    '''
    pandas.core.frame.DataFrame
    '''
    

    可以得知当index不为唯一值时

    pandas会回传资料型态为DataFrame的结果

  • .loc [ ] 也可以用在不同维度的资料索取

    现在想知道顾客2居住的城市的话

    就可以先从row的index开始

    再到column里检索

    在中括号内利用逗号隔开两个条件

    df.loc["customer2","City"]
    '''
    'Taipei'
    '''
    

    这种方式还有另外一个写法

    df.loc["customer2"]["City"]
    '''
    'Taipei'
    '''
    

    会得到同样的结果

    这种把回传值再传到下一个指令的方法叫做**"Chaining"**

    这个方式是产生一个复制过後的新的DataFrame

    第二种方式有slicing的性质

    如果想要撷取所有顾客的"Name"还有"City",可以先在row里用":"找出所有row,再利用list指定想要的column

    df.loc[:,["Name","City"]]
    

  • 现在若是想用.loc[ ] 找到column里的资料

    方法一是将表格转置

    让column跟row对调,使用.T

    df.T
    

    先来看看转置之後的表格会变成怎样

    接下来就可以用row查询想要的值

    如果想找出顾客的所在城市资讯

    df.T.loc["City"]
    

2. 取出Column里的资料

  • 可以直接使用[ ],里面放column的栏位名称

    当我们知道所有的顾客名字时

    df["Name"]
    

    直接在[ ]里放上栏位名称即可

  • 还有另外一种表示法,可以直接利用.栏位名称,记得不用加上引号

    df.Name
    

    可以看到两个方法回传的答案会是一致的

小结

今天练习的是DataFrame的基本操作

简单的产生DataFrame

还有练习资料的查询

这些概念衍伸了执行Series会用到的语法

还有SQL关於资料库的概念

Pandas的世界博大精深

明天继续探索


<<:  Day15 元件系统

>>:  予焦啦!Golang 当中的讯号(signal)机制

强型闯入DenoLand[26] - 使用 Deno 打造多线程应用(3)

强型闯入DenoLand[26] - 使用 Deno 打造多线程应用(3) 在介绍完多线程的概念以...

R语言-2&3-记忆体

在电脑中的资料单位 1个0或1 =>一个位元(bit) 8个0或1 =>一个位元组(By...

[Day28] 建立购物车系统 - 11

本篇同步发文在个人Blog: 一袋.NET要扛几楼?打造容器化的ASP.NET Core网站!系列文...

[新手教学]如何使用Line Notify

首先登入到 LINE Notify 并进入到个人页面 接着选择要接收通知的聊天室,也可以透过一对一接...

Day2 介绍网页的基础架构

要开始写网页之前,首先要了解到网页是如何形成的,其实网页形成非常的简单,透过网页浏览器(google...