Day 15 [Python ML、Pandas] 统整资料和Maps

import pandas as pd
pd.set_option('max_rows', 5)
import numpy as np
reviews = pd.read_csv("./winemag-data-130k-v2.csv", index_col=0)

Summary functions

pandas提供一些summary function,可以帮助我们重组资料

例如describe()

reviews.points.describe()
count    129971.000000
mean         88.447138
             ...      
75%          91.000000
max         100.000000
Name: points, Length: 8, dtype: float64

以上是会得到得依些summary资料

若是将 类别属性 的资料丢入,会得到什麽东西?

reviews.taster_name.describe()
count         103727
unique            19
top       Roger Voss
freq           25514
Name: taster_name, dtype: object

若只想取得特定的summary资料,可以单独下指令

reviews.points.mean()
88.44713820775404

类别属性的资料想要知道有哪些类别,可以利用unique() function

reviews.taster_name.unique()
array(['Kerin O’Keefe', 'Roger Voss', 'Paul Gregutt',
       'Alexander Peartree', 'Michael Schachner', 'Anna Lee C. Iijima',
       'Virginie Boone', 'Matt Kettmann', nan, 'Sean P. Sullivan',
       'Jim Gordon', 'Joe Czerwinski', 'Anne Krebiehl\xa0MW',
       'Lauren Buzzeo', 'Mike DeSimone', 'Jeff Jenssen',
       'Susan Kostrzewa', 'Carrie Dykes', 'Fiona Adams',
       'Christina Pickard'], dtype=object)

若想知道每一个unique的资料在data中出现几次,可以使用value_counts() function

Maps

这是一个function可以把资料从另一个set中拿出来并且做运算

review_points_mean = reviews.points.mean()
reviews.points.map(lambda p: p - review_points_mean)
0        -1.447138
1        -1.447138
            ...   
129969    1.552862
129970    1.552862
Name: points, Length: 129971, dtype: float64

先将points的mean储存在review_points_mean

在用lambda将point的值取出来到p,把p-review_points_mean的值储存进Series中

若想将资料直接储存进reviews,可以使用applyfunction

def remean_points(row):
    row.points = row.points - review_points_mean
    return row

reviews.apply(remean_points, axis='columns')
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}

apply预设axis=0 or axis='index',也就是每次都会将column拿出来处理

若是想修改每一列的资料,要使用axis=1 or axis='columns'

map()是回传一个Series,apply()是回传一个DataFrame

但这两者都不会直接修改到原始的数据资料

reviews.head(1)
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}

有一些内建的方法,可以比map()apply()的效率更高

但是这些方法并没有上面的这两个function来的灵活

review_points_mean = reviews.points.mean()
reviews.points - review_points_mean
0        -1.447138
1        -1.447138
            ...   
129969    1.552862
129970    1.552862
Name: points, Length: 129971, dtype: float64
reviews.country + " - " + reviews.region_1
0            Italy - Etna
1                     NaN
               ...       
129969    France - Alsace
129970    France - Alsace
Length: 129971, dtype: object

<<:  Day28 - 轻前端 Component - 多个 jQuery UI Selectmenu 连动

>>:  EP16 - 用生活化的例子解释容器,是否搞错了些什麽

Day 27 Filebeat with multiple module and ELK Dashboard

Day 27 Filebeat with multiple module and ELK Dashb...

使用Vertex汇出的模型 | ML#Day26

模型训练完成後,除了使用Vertex的一键部署,若想要自行部署或在自己电脑上使用该怎麽做呢? 跟大家...

档案总管右半边Delphi TListView

档案总管右半边Delphi TListView 延续上一篇 想要写一个”档案总管”的想法,今天先来完...

Day11 Vue directives(v-on & v-bind)

到底什麽式Vue directives Vue directives简单来说就是一种可以挂在HTML...

[Day11 - React Native] 为你的 APP 加入 icon - iOS

现在有了 LOGO 也有了 APP 专案,我们就可以先把 APP 的 icon 放到我们的 APP ...