Pandas 教程 — 篩選讓你動(dòng)心的電影(2)

上一節(jié)對(duì) Pandas 整體有了一個(gè)簡(jiǎn)單的認(rèn)識(shí),接下來(lái)我們看一下 Pandas 的數(shù)據(jù)結(jié)構(gòu)到底是什么,先使用 type( ) 查看一下變量類(lèi)型

import pandas as pd

movie_pd = pd.read_csv('douban_movie.csv', header = 0, sep = '\t')
print type(movie_pd)

輸出結(jié)果如下:

<class 'pandas.core.frame.DataFrame'>

可見(jiàn),Pandas 的基本數(shù)據(jù)結(jié)構(gòu)是 DataFrame, 怎么理解這個(gè) DataFrame 呢?

其實(shí) DataFrame 類(lèi)似于 Excel 中的表,表有行標(biāo)題和列標(biāo)題,比如下面這個(gè)表:

DataFrame

對(duì)應(yīng)的 DataFrame 就是:

     movie_count    total_vote     average_score
BJ          126         1762312            8.6
SH          138         2083123            8.3
TJ           95          891212            7.9
CQ           88          762310            8.1

是不是很像,在 Pandas 中,列名相當(dāng)于列標(biāo)題 movie_count、total_vote、average_score,而行標(biāo)題 BJ、SH、TJ、CQ 就相當(dāng)于 索引。

那么如何創(chuàng)建一個(gè)新的 DataFrame 呢?使用 pd.DataFrame( ) 方法即可,具體有兩種方式:

  • 按列創(chuàng)建

比如說(shuō)創(chuàng)建一個(gè)只有 電影類(lèi)型 category 和 電影評(píng)分 score 兩列的 DataFrame,直接扔進(jìn)去一個(gè)字典,字典的鍵將作為列名,對(duì)應(yīng)鍵的值將作為列值。

temp_dict =  {
        'score':  [ 8.9, 8.2, 9.3 ],
        'category': ['懸疑', '動(dòng)作', '愛(ài)情']
    }
temp_pd = pd.DataFrame(temp_dict)
print temp_pd

輸出結(jié)果如下:

   category   score
0       懸疑       8.9
1       動(dòng)作       8.2 
2       愛(ài)情       9.3

  • 按行創(chuàng)建

上述 DataFrame 也可以使用按行創(chuàng)建的思路生成,但實(shí)際中使用的并不多,創(chuàng)建時(shí)需要傳入一個(gè)列表進(jìn)去。

row1 = [8.9, '懸疑' ]
row2 = [8.2, '動(dòng)作']
row3 = [9.3, '愛(ài)情' ]
temp_pd = pd.DataFrame([ row1, row2, row3 ], columns = ['score', 'category'])

不同的是,按行創(chuàng)建一般需要指定列名,使用 columns = ['score', 'category'] 來(lái)分別對(duì)列重命名,否則默認(rèn)的列名是以數(shù)字命 0、1 命名的,使用起來(lái)并不直觀。

新創(chuàng)建的 DataFrame,或者從文件讀入的 DataFrame,默認(rèn)的索引都是從 0 ~ N-1 的數(shù)字,其中 N 為 DataFrame 的長(zhǎng)度,可以使用 len( ) 來(lái)獲取。

print len(temp_pd)
print temp_pd.index
temp_pd.index = ['movie_1', 'movie_2', 'movie_3']
print temp_pd.columns
temp_pd.columns = ['movie_score', 'movie_category']
print temp_pd
print temp_pd.values

數(shù)據(jù)結(jié)果如下:

3
RangeIndex(start=0, stop=3, step=1)
Index([u'category', u'score'], dtype='object')
             movie_score  movie_category
movie_1          懸疑             8.9
movie_2          動(dòng)作             8.2
movie_3          愛(ài)情             9.3
[['\xe6\x82\xac\xe7\x96\x91' 8.9]
 ['\xe5\x8a\xa8\xe4\xbd\x9c' 8.2]
 ['\xe7\x88\xb1\xe6\x83\x85' 9.3]]

index 可以獲取 DataFrame 的索引,更改之前是 0、1、2,之后變?yōu)榱薽ovie_1、movie_2 、movie_3 。

columns 可以獲取 DataFrame 的列名,更改之前是 score 、category,之后變?yōu)榱薽ovie_score、movie_category。

values 則可以獲取 DataFrame 的值,每一行各個(gè)列的值都是一個(gè)列表,所有的行整體又組成一個(gè)列表,有點(diǎn)類(lèi)似于二維數(shù)組。

同時(shí)也可以通過(guò)賦值的方式更改 DataFrame 的索引 index、列名 columns。

劃重點(diǎn)

  • DataFrame 類(lèi)似于 Excel 中的表,有行和列
  • index 索引、columns 列名 、values 值
  • pd.DataFrame( ) 創(chuàng)建一個(gè)新的 DataFrame,可以傳入字典或列表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容