小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 靜幻堂 2018-09-28
Python唱情歌 2018-09-27 11:21:55

Pandas是什么?

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

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

3、應(yīng)用在數(shù)學(xué)挖掘,數(shù)據(jù)分析。比如,學(xué)生成績分析,股票數(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、通過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、通過索引獲取數(shù)據(jù)

ser_obj[1]

ser_obj[8]

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

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

print(ser_obj[ser_obj > 15])

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

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

DataFrame

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

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

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

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

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

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

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

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

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

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

3、常見的Index種類

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

print(type(ser_obj.index))

print(type(df_obj2.index))

print(df_obj2.index)

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

<class 'pandas.core.indexes.range.RangeIndex'>

<class 'pandas.core.indexes.numeric.Int64Index'>

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())

# 通過索引取值 ser_obj['label'],ser_obj[pos]

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

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

# 切片索引

print(ser_obj[1:3]) // 前開后閉,即,取到兩個(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)算,沒對(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ì)齊,沒對(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í)通過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ù)

#如果沒有指定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.)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多