上一節(jié)對 Pandas 整體有了一個簡單的認識佳遂,接下來我們看一下 Pandas 的數(shù)據(jù)結構到底是什么有鹿,先使用 type( ) 查看一下變量類型
import pandas as pd
movie_pd = pd.read_csv('douban_movie.csv', header = 0, sep = '\t')
print type(movie_pd)
輸出結果如下:
<class 'pandas.core.frame.DataFrame'>
可見,Pandas 的基本數(shù)據(jù)結構是 DataFrame, 怎么理解這個 DataFrame 呢硼婿?
其實 DataFrame 類似于 Excel 中的表,表有行標題和列標題搂抒,比如下面這個表:
對應的 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 中尿扯,列名相當于列標題 movie_count求晶、total_vote、average_score衷笋,而行標題 BJ芳杏、SH、TJ辟宗、CQ 就相當于 索引爵赵。
那么如何創(chuàng)建一個新的 DataFrame 呢?使用 pd.DataFrame( ) 方法即可泊脐,具體有兩種方式:
- 按列創(chuàng)建
比如說創(chuàng)建一個只有 電影類型 category 和 電影評分 score 兩列的 DataFrame空幻,直接扔進去一個字典,字典的鍵將作為列名容客,對應鍵的值將作為列值秕铛。
temp_dict = {
'score': [ 8.9, 8.2, 9.3 ],
'category': ['懸疑', '動作', '愛情']
}
temp_pd = pd.DataFrame(temp_dict)
print temp_pd
輸出結果如下:
category score
0 懸疑 8.9
1 動作 8.2
2 愛情 9.3
- 按行創(chuàng)建
上述 DataFrame 也可以使用按行創(chuàng)建的思路生成,但實際中使用的并不多缩挑,創(chuàng)建時需要傳入一個列表進去但两。
row1 = [8.9, '懸疑' ]
row2 = [8.2, '動作']
row3 = [9.3, '愛情' ]
temp_pd = pd.DataFrame([ row1, row2, row3 ], columns = ['score', 'category'])
不同的是,按行創(chuàng)建一般需要指定列名供置,使用 columns = ['score', 'category'] 來分別對列重命名谨湘,否則默認的列名是以數(shù)字命 0、1 命名的芥丧,使用起來并不直觀紧阔。
新創(chuàng)建的 DataFrame,或者從文件讀入的 DataFrame续担,默認的索引都是從 0 ~ N-1 的數(shù)字寓辱,其中 N 為 DataFrame 的長度,可以使用 len( ) 來獲取赤拒。
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ù)結果如下:
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 動作 8.2
movie_3 愛情 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 的值蝙茶,每一行各個列的值都是一個列表,所有的行整體又組成一個列表诸老,有點類似于二維數(shù)組隆夯。
同時也可以通過賦值的方式更改 DataFrame 的索引 index、列名 columns别伏。
劃重點
- DataFrame 類似于 Excel 中的表蹄衷,有行和列
- index 索引、columns 列名 厘肮、values 值
- pd.DataFrame( ) 創(chuàng)建一個新的 DataFrame愧口,可以傳入字典或列表