Python數(shù)據(jù)分析——Pandas數(shù)據(jù)結(jié)構(gòu)和操作

Pandas是什么顽馋?

1谓厘、一個(gè)強(qiáng)大的分析 結(jié)構(gòu)化數(shù)據(jù) 的工具集

2、基礎(chǔ)是NumPy寸谜,提供了 高性能矩陣 的運(yùn)算

3竟稳、應(yīng)用在數(shù)學(xué)挖掘,數(shù)據(jù)分析熊痴。比如他爸,學(xué)生成績(jī)分析,股票數(shù)據(jù)分析等

4果善、提供數(shù)據(jù)清洗功能

#使用

import pandas as pd

Pands數(shù)據(jù)結(jié)構(gòu)诊笤,主要分為兩種,Series和DataFrame

Series? ? ? ? ? ? ?視頻資料學(xué)習(xí)分享? 企(Q)鵝群? ? 519970686

1岭埠、類似一維數(shù)組的對(duì)象

2盏混、通過(guò)list構(gòu)建Series

ser_obj = pd.Series(rang(10))

3、由數(shù)據(jù)和索引組成

索引在左惜论,數(shù)據(jù)在右

索引是自動(dòng)創(chuàng)建的

4许赃、獲取數(shù)據(jù)和索引

ser_obj.index

ser_obj.values

5、預(yù)覽數(shù)據(jù)(取前幾個(gè))

ser_obj.head(n)

6馆类、通過(guò)索引獲取數(shù)據(jù)

ser_obj[1]

ser_obj[8]

7混聊、索引與數(shù)據(jù)的對(duì)應(yīng)關(guān)系仍保持在數(shù)組運(yùn)算的結(jié)果中(過(guò)濾series中的數(shù)據(jù))

print(ser_obj[ser_obj > 15])

8、通過(guò)dict構(gòu)建Series

year_data = {2001: 17.8, 2002: 20.1, 2003: 16.5}

ser_obj2 = pd.Series(year_data)

print(ser_obj2.head())

print(ser_obj2.index)

ser_obj2.name = 'temp'

#指定name名稱(相當(dāng)于表頭)

ser_obj2.index.name = 'year'

print(ser_obj2.head())

=================================

2001 17.8

2002 20.1

2003 16.5

dtype: float64

Int64Index([2001, 2002, 2003], dtype='int64')

year

2001 17.8

2002 20.1

2003 16.5

Name: temp, dtype: float64

DataFrame

1乾巧、類似多維數(shù)組/表格數(shù)據(jù)

2句喜、每列數(shù)據(jù)可以是不同的類型

3、索引包括行索引和列索引

import numpy as np

# 通過(guò)ndarray構(gòu)建DataFrame

array = np.random.randn(5,4)

print(array)

df_obj = pd.DataFrame(array)

print(df_obj)

# 通過(guò)dict構(gòu)建DataFrame

dict_data = {'A': 1.,

'B': pd.Timestamp('20161217'),

'C': pd.Series(1, index=list(range(4)),dtype='float32'),

'D': np.array([3] * 4,dtype='int32'),

'E' : pd.Categorical(["Python","Java","C++","C#"]),

'F' : 'ChinaHadoop' }

#print dict_data

df_obj2 = pd.DataFrame(dict_data)

print(df_obj2.head())

# 通過(guò)列索引獲取列數(shù)據(jù)(dataFrame優(yōu)先通過(guò)列索引訪問(wèn)數(shù)據(jù))

print(df_obj2['A'])

#通過(guò)索引訪問(wèn)數(shù)據(jù)

print(df_obj2.values[2])

#每列都是一個(gè)series

print(type(df_obj2['A']))

#通過(guò)對(duì)象屬性訪問(wèn)

print(df_obj2.A)

# 增加列沟于,類似dict添加key-value

df_obj2['G'] = df_obj2['D'] + 4

print(df_obj2.head())

# 刪除列

del(df_obj2['G'] )

print(df_obj2.head())

Index 索引對(duì)象? ? ? ? ???視頻資料學(xué)習(xí)分享? 企(Q)鵝群? ? 519970686

1咳胃、Series和DataFrame中的索引都是Index對(duì)象

2、Index具有不可變性(immutable)旷太,即Series和DataFrame中的value可以改變展懈,但是索引不可變,保證了數(shù)據(jù)的安全

3供璧、常見(jiàn)的Index種類

Index Int64Index MultiIndex(層級(jí)索引) DatatimeIndex(時(shí)間戳類型)

print(type(ser_obj.index))

print(type(df_obj2.index))

print(df_obj2.index)

=====================================

Int64Index([0, 1, 2, 3], dtype='int64')

Series數(shù)據(jù)操作

import pandas as pd

#index,指定索引名稱

ser_obj = pd.Series(range(5), index = ['a', 'b', 'c', 'd', 'e'])

print(ser_obj.head())

# 通過(guò)索引取值 ser_obj['label'],ser_obj[pos]

print(ser_obj['a']) //通過(guò)索引名取值

print(ser_obj[0]) //通過(guò)位置索引取值

# 切片索引

print(ser_obj[1:3]) // 前開(kāi)后閉存崖,即,取到兩個(gè)值

print(ser_obj['b':'d']) //前閉后閉睡毒,即来惧,取到三個(gè)值

# 不連續(xù)索引

print(ser_obj[[0, 2, 4]]) // 內(nèi)部是list

print(ser_obj[['a', 'e']]) //內(nèi)部是list

# 布爾索引

ser_bool = ser_obj > 2

print(ser_bool)

print(ser_obj[ser_bool])

print(ser_obj[ser_obj > 2])

DataFrame數(shù)據(jù)操作

import numpy as np

# colmns 指定列名

df_obj = pd.DataFrame(np.random.randn(5,4), columns = ['a', 'b', 'c', 'd'])

print(df_obj.head())

# 列索引

print('列索引')

print(df_obj['a']) # 返回Series類型

print(type(df_obj)) # 返回DataFrame類型

# 不連續(xù)索引

print('不連續(xù)索引')

print(df_obj[['a','c']]) # 返回第一列和第三列

索引操作總結(jié)

Pandas的索引操作可歸納為3種

.loc:標(biāo)簽索引(標(biāo)簽的切片索引是包含末尾位置的,上面的前閉后閉)

.iloc: 位置索引

.ix: 標(biāo)簽與位置混合索引

-------------先按標(biāo)簽索引嘗試操作演顾,然后再按照位置索引嘗試操作

# 標(biāo)簽索引 loc

# Series

print(ser_obj['b':'d'])

print(ser_obj.loc['b':'d'])

# DataFrame

print(df_obj['a'])

print(df_obj.loc[0:2, 'a'])

# 整型位置索引 iloc

print(ser_obj[1:3])

print(ser_obj.iloc[1:3])

# DataFrame

第一個(gè)參數(shù)供搀,表示的是第1行和第二行隅居,第二個(gè)0表示的哪一列

print(df_obj.iloc[0:2, 0]) # 注意和df_obj.loc[0:2, 'a']的區(qū)別

運(yùn)算與對(duì)齊

按索引對(duì)齊運(yùn)算,沒(méi)對(duì)齊的位置補(bǔ)NaN

s1 = pd.Series(range(10, 20), index = range(10))

s2 = pd.Series(range(20, 25), index = range(5))

# Series 對(duì)齊運(yùn)算,Series按行索引對(duì)齊葛虐,沒(méi)對(duì)齊的位置補(bǔ)NaN

print(s1 + s2)

==================================================

0 30.0

1 32.0

2 34.0

3 36.0

4 38.0

5 NaN

6 NaN

7 NaN

8 NaN

9 NaN

================================================

import numpy as np

df1 = pd.DataFrame(np.ones((2,2)), columns = ['a', 'b'])

df2 = pd.DataFrame(np.ones((3,3)), columns = ['a', 'b', 'c'])

# DataFrame對(duì)齊操作

print(df1 + df2)

=============================

a b c

0 2.0 2.0 NaN

1 2.0 2.0 NaN

2 NaN NaN NaN

================================

# 填充未對(duì)齊的數(shù)據(jù)進(jìn)行運(yùn)算

#使用add,sub,div,mul军浆;同時(shí)通過(guò)fill_value指定填充值

s1.add(s2, fill_value = 1)

df1.sub(df2, fill_value = 2.)

# 填充NaN

s3 = s1 + s2

s3_filled = s3.fillna(-1)//把所有的NaN使用-1填充

df3 = df1 + df2

df3.fillna(100, inplace = True)//把所有的NaN使用100填充

函數(shù)應(yīng)用

# Numpy ufunc 函數(shù)

df = pd.DataFrame(np.random.randn(5,4) - 1)

#求絕對(duì)值,作用于df中每個(gè)數(shù)據(jù)

print(np.abs(df))

# 使用apply應(yīng)用行或列數(shù)據(jù)

#如果沒(méi)有指定axis方向挡闰,默認(rèn)按列乒融,axis =0

print(df.apply(lambda x : x.max()))

# 指定軸方向

print(df.apply(lambda x : x.max(), axis=1))

# 使用applymap應(yīng)用到每個(gè)數(shù)據(jù)

f2 = lambda x : '%.2f' % x

print(df.applymap(f2))

排序

s4 = pd.Series(range(10, 15), index = np.random.randint(5, size=5))

# 索引排序

s4.sort_index()

df4 = pd.DataFrame(np.random.randn(3, 4),

index=np.random.randint(3, size=3),

columns=np.random.randint(4, size=4))

df4.sort_index(axis=1)

# 按值排序 sort_values(by='label')

df4.sort_values(by=1)

處理缺失數(shù)據(jù)? ? ? ? ? ??視頻資料學(xué)習(xí)分享? 企(Q)鵝群? ? 519970686

import numpy as np

df_data = pd.DataFrame([np.random.randn(3), [1., np.nan, np.nan],

[4., np.nan, np.nan], [1., np.nan, 2.]])

df_data.head()

# isnull

df_data.isnull()

# dropna 丟棄缺失數(shù)據(jù)

df_data.dropna()

#df_data.dropna(axis=1)

# fillna 填充缺失數(shù)據(jù)

df_data.fillna(-100.)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市摄悯,隨后出現(xiàn)的幾起案子赞季,更是在濱河造成了極大的恐慌,老刑警劉巖奢驯,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件申钩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘪阁,警方通過(guò)查閱死者的電腦和手機(jī)撒遣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)管跺,“玉大人义黎,你說(shuō)我怎么就攤上這事』砼埽” “怎么了廉涕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)艇拍。 經(jīng)常有香客問(wèn)我狐蜕,道長(zhǎng),這世上最難降的妖魔是什么卸夕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任层释,我火速辦了婚禮,結(jié)果婚禮上快集,老公的妹妹穿的比我還像新娘贡羔。我一直安慰自己,他們只是感情好碍讨,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布治力。 她就那樣靜靜地躺著蒙秒,像睡著了一般勃黍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晕讲,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天覆获,我揣著相機(jī)與錄音马澈,去河邊找鬼。 笑死弄息,一個(gè)胖子當(dāng)著我的面吹牛痊班,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摹量,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼涤伐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缨称?” 一聲冷哼從身側(cè)響起凝果,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睦尽,沒(méi)想到半個(gè)月后器净,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡当凡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年山害,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沿量。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浪慌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朴则,到底是詐尸還是另有隱情眷射,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布佛掖,位于F島的核電站妖碉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芥被。R本人自食惡果不足惜欧宜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拴魄。 院中可真熱鬧冗茸,春花似錦、人聲如沸匹中。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顶捷。三九已至挂绰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間服赎,已是汗流浹背葵蒂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工交播, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人践付。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓秦士,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親永高。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隧土,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容