#9 Pandas教学

Pandas序列-Series

安装

请在终端机底下输入这个,谢谢
pip install pandas

载入Pandas

老样子,像这样

import pandas as pd

如同numpy的简称,pd是世俗公认的pandas简称

Series建立

Series是Pandas最基础的类别,简单来说Series就是一条资料,他说一维的资料型态,长的像这样

索引 1 2 3 4 5 6 7
资料 33 23 66 11 35 42 88

我们使用列表来建立Series

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以列表来建立Series
    l = [33, 23, 66, 11, 35, 42, 88]
    s = pd.Series(l)
    print(s)
    """
    印出
    0    33
    1    23
    2    66
    3    11
    4    35
    5    42
    6    88
    dtype: int64
    """

    # 存取
    print(s[4])
    # 印出 35

Series重要属性

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以列表来建立Series
    l = [33, 23, 66, 11, 35, 42, 88]
    s = pd.Series(l)

    # 查看大小
    print(s.size)
    # 印出 7
    # 查看资料型态
    print(s.dtype)
    # 印出 int64
    # 查看资料形状
    print(s.shape)
    # 印出 (7,)
    # 查看索引
    print(s.index)
    # 印出 RangeIndex(start=0, stop=7, step=1),传回的物件RangeIndex可以视为下方的列表
    # [0, 1, 2, 3, 4, 5, 6],从0开始,到7停止,每个元素相差为1的列表,所以这的Series的索引就是0~6

Series重要方法

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以列表来建立Series
    l = [33, 23, 66, 11, 35, 42, 88]
    s = pd.Series(l)

    # 加总
    print(s.sum()) # 298
    # 最大值
    print(s.max()) # 88
    # 最小值
    print(s.min()) # 11
    # 连乘运算
    print(s.prod()) # 71281758240
    # 平均
    print(s.mean()) # 42.57142857142857
    # 中位数
    print(s.median()) # 35
    # 标准差
    print(s.std()) # 26.273288988737484
    # 找前n笔资料
    print(s.head(3))
    """
    0    33
    1    23
    2    66
    dtype: int64
    """
    # 找最大的n笔资料
    print(s.nlargest(3))
    """
    6    88
    2    66
    5    42
    dtype: int64
    """
    # 找最小的n笔资料
    print(s.nsmallest(3))
    """
    3    11
    1    23
    0    33
    dtype: int64
    """

自订索引

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以列表来建立Series,索引为i
    l = [33, 23, 66, 11, 35, 42, 88]
    i = ["猫", "狗", "羊", "猪", "鸡", "牛", "马"]
    s = pd.Series(l, index = i)
    print(s)
    """
    猫    33
    狗    23
    羊    66
    猪    11
    鸡    35
    牛    42
    马    88
    dtype: int64
    """  
    print(s.index)
    # Index(['猫', '狗', '羊', '猪', '鸡', '牛', '马'], dtype='object')
    print(s["羊"])
    # 66

Pandas资料表-DataFrame

相较於Series是一条资料,DataFrame可以说是一张表格,我们日常生活中所见的资料大多是以表格的方式呈现,因此DataFrame是整个Pandas的主力类别,也是让Pandas被称为python版Excel的原因,DataFrame大概像这个样子

索引 品牌"型号 自动排档 价格
0 Toyota 86 False 1300000
1 Subaru BRZ True 1320000
2 NISSAN GT-R True 6750000
4 MAZDA MX-5 False 1340000

DataFrame建立

DataFrame是以字典来建立的

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以字典来建立DataFrame
    d = {
        "brand":["Toyota 86", "Subaru BRZ", "NISSAN GT-R", "MAZDA MX-5"],
        "auto":[False, True, True, False],
        "price":[1300000, 1320000, 6750000, 1340000],
        }
    data = pd.DataFrame(d)
    print(data)
    """
             brand   auto    price
    0    Toyota 86  False  1300000
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    3   MAZDA MX-5  False  1340000
    """

DataFrame基本操作

DataFrame的存取方式如下
这里要提的是DataFrame是一张资料表,因此既然是资料表,就会有栏跟列的区别,栏就是直的,列是横的,这点很重要,当然DataFrame不仅能操作一格资料,也能直接对一整栏或一整列做操作,一整栏或一整列就是指一条资料
因此从DataFrame取下一整栏或一整列的资料型态(类别)就是Series,所以Series的属性和方法等等操作方式,也同样适用於从DataFrame取下的一整栏或一整列的资料

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以字典来建立DataFrame
    d = {
        "brand":["Toyota 86", "Subaru BRZ", "NISSAN GT-R", "MAZDA MX-5"],
        "auto":[False, True, True, False],
        "price":[1300000, 1320000, 6750000, 1340000],
        }
    data = pd.DataFrame(d)
    print(data)
    """
             brand   auto    price
    0    Toyota 86  False  1300000
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    3   MAZDA MX-5  False  1340000
    """
    #操作一格资料
    # brand栏位的第0笔资料
    print(data["brand"][0]) # Toyota 86
    # price栏位的第2笔资料
    print(data["price"][2]) # 6750000

    #操作一栏资料
    #type()可以查看某个物件的类别
    print(type(data["auto"])) # <class 'pandas.core.series.Series'>
    print(data["auto"])
    """
    0    False
    1     True
    2     True
    3    False
    Name: auto, dtype: bool
    """
    print(data["auto"].dtype) # bool

    #操作一列(一整笔)资料,透过DataFrame的loc属性
    #type()可以查看某个物件的类别
    print(type(data.loc[3])) # <class 'pandas.core.series.Series'>
    print(data.loc[3])
    """
    brand    MAZDA MX-5
    auto          False
    price       1340000
    Name: 3, dtype: object
    """
    print(data.loc[3].size) # 3

    #切片
    #从第1列开始取,一共要取2列
    print(data.loc[1:2])
    """
             brand   auto    price
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    """

    print(data.loc[1:2]["brand"])
    """
    1   Subaru BRZ
    2  NISSAN GT-R
    """

常用属性

# 载入pandas
import pandas as pd

if __name__ == "__main__":
    # 以字典来建立DataFrame
    d = {
        "brand":["Toyota 86", "Subaru BRZ", "NISSAN GT-R", "MAZDA MX-5"],
        "auto":[False, True, True, False],
        "price":[1300000, 1320000, 6750000, 1340000],
        }
    data = pd.DataFrame(d)
    print(data)
    """
             brand   auto    price
    0    Toyota 86  False  1300000
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    3   MAZDA MX-5  False  1340000
    """

    # 大小
    print(data.size) # 12,一共12格资料
    # 形状
    print(data.shape) #(4, 3),4列3栏
    # 索引
    print(data.index) #RangeIndex(start=0, stop=4, step=1)
    # 栏位
    print(data.columns) #Index(['brand', 'auto', 'price'], dtype='object')

<<:  [Day9] Cloud SQL

>>:  Day 10 号志的作用

CSS微动画 - 图片不裁切,纯css实现分格淡出

Q: 还有什麽特别的可以写吗? A: 可能... 再回去Loading吧(๑¯∀¯๑) 本篇要来做...

android studio 30天学习笔记-day 8-基本介绍rxjava2

RxJava2是一套处理非同步(asynchronous)事件的library,这个library是...

More About Textures

大家好,我是西瓜,你现在看到的是 2021 iThome 铁人赛『如何在网页中绘制 3D 场景?从 ...

30天Python自学:Day02

#以下内容皆由初学者撰写,有错误可能,不建议尽信 30天Python自学: Day02 Python...

离职倒数21天:「欸,蒲公英是什麽颜色?」谈工作上的沟通问题

有一天男友上完远端的中文课後走出房间,突然问我「欸,蒲公英是什麽颜色?」我觉得以他的习性,突然跟我聊...