Pandas 是强大的资料科学分析工具,
今天要进入DataFrame的介绍
首先简介Dataframe
又可以称作资料框架,是表格型的资料结构
我们生活中常见的类似例子为Excel表格
可以想成DataFrame是Pandas里的Excel表格
实际上是由多个 Series 组合起来的资料结构
通常用来封装、处理二维的资料
今天练习的分别是
看的课程是Coursera上的 Introduction to Data Science in Python
Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera
下面的练习是利用上课教的还有以前在学校教过的
重新整理有关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()
在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"]
可以直接使用[ ]
,里面放column的栏位名称
当我们知道所有的顾客名字时
df["Name"]
直接在[ ]里放上栏位名称即可
还有另外一种表示法,可以直接利用.栏位名称
,记得不用加上引号
df.Name
可以看到两个方法回传的答案会是一致的
今天练习的是DataFrame的基本操作
简单的产生DataFrame
还有练习资料的查询
这些概念衍伸了执行Series会用到的语法
还有SQL关於资料库的概念
Pandas的世界博大精深
明天继续探索
>>: 予焦啦!Golang 当中的讯号(signal)机制
强型闯入DenoLand[26] - 使用 Deno 打造多线程应用(3) 在介绍完多线程的概念以...
在电脑中的资料单位 1个0或1 =>一个位元(bit) 8个0或1 =>一个位元组(By...
本篇同步发文在个人Blog: 一袋.NET要扛几楼?打造容器化的ASP.NET Core网站!系列文...
首先登入到 LINE Notify 并进入到个人页面 接着选择要接收通知的聊天室,也可以透过一对一接...
要开始写网页之前,首先要了解到网页是如何形成的,其实网页形成非常的简单,透过网页浏览器(google...