自學(xué)Python——Pandas

0.簡介

“Python Data Analysis Library 或 pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的氧敢。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型吓揪,提供了高效地操作大型數(shù)據(jù)集所需的工具第步。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法校焦。你很快就會發(fā)現(xiàn)俏脊,它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一茸俭〉趼模”——百度百科

1.初識Pandas

1.1引包

import pandas
import numpy

1.2讀取csv文件

data=pandas.read_csv('1.csv',encoding='gbk')
print(data)
print(data.dtypes)

1.3基本數(shù)據(jù)結(jié)構(gòu)

# 直接取出來的數(shù)據(jù)放入的是DataFrame
print(type(data))

# DataFrame的某幾列--->成為Series
print(type(data["id"]))

# DataFrame的某幾行--->仍然是DataFrame
print(type(data.loc[0:3]))

# DataFrame的某幾列的某幾行--->成為Series
print(type(data["id"].loc[0:3]))

print(data.columns)

print(data.shape)


2.可視化顯示部分?jǐn)?shù)據(jù)

data.head() # 默認(rèn)前五行

data.head(3)# 也可以指定默認(rèn)前幾行

data.tail() #默認(rèn)顯示后五行

# 指定顯示某一行
print(data.loc[1])
data.loc[1]

# 指定某幾行
data.loc[1:3]
data.loc[[1,3,5]]

# 取出  指定行  指定列  的值
data.loc[1,"性別"]

# 取出指定的列
print(data["id"])
print(data[["id","性別"]])


# 獲取滿足條件的某些數(shù)據(jù)
print(data[data["年齡"]>30])



3.操作字段名


list_title=data.columns.tolist()
print(list_title)
print(type(list_title))

# 對存儲所有字段的list進(jìn)行操作后,可獲取指定的列
print(data[list_title])

4.基本操作

4.1四則運算

與numpy一樣调鬓,都是對整體進(jìn)行操作

4.2函數(shù)

# 某一列的最大值艇炎,最小值,排序
print(data["年齡"].max())

print(data["年齡"].min())


# 求均值(會自動過濾掉  那些有缺失值的數(shù)據(jù)腾窝,進(jìn)而求平均值)
print(data["年齡"].mean())


data.sort_values("年齡",inplace=True)
#第一個參數(shù)指排序的字段(默認(rèn)升序)缀踪,第二個參數(shù)是否替換data本身的數(shù)據(jù)(新生成一個DataFrame,并讓data指向ta)
print(data)


# 第三個參數(shù)——升降序
data.sort_values("年齡",inplace=True,ascending=False)
print(data)


# 排序后虹脯,重做索引值
print(data.reset_index(drop=True))


5.截取部分?jǐn)?shù)據(jù)

#取出某一列
data_tian=data["*天門冬氨酸氨基轉(zhuǎn)換酶"]
print(data_tian)

#判斷某一列中那些為空
data_tian_isnull=pandas.isnull( data["*天門冬氨酸氨基轉(zhuǎn)換酶"])
#print(data_tian_isnull)

#將為空的數(shù)據(jù)取出
data_tian__null=data_tian[data_tian_isnull]
#print(data_tian__null)

# 判斷有多少是為空的數(shù)據(jù)
#print(len(data_tian__null))

# 取出非空的數(shù)據(jù)
data_is_not_null=data_tian[data_tian_isnull==False]

# 判斷非空的數(shù)據(jù)的平均值
print(sum(data_is_not_null)/len(data_is_not_null))


# pandas在求平均值時會自動過濾到那些沒有值的數(shù)據(jù)
print(data_tian.mean())

6.求出表中某些字段(values)與指定字段(index)之間在某方面(aggfunc)的對應(yīng)關(guān)系

print(data.pivot_table(index="性別",values="*天門冬氨酸氨基轉(zhuǎn)換酶",aggfunc=numpy.mean))

print(data.pivot_table(index="性別",values="年齡",aggfunc=numpy.mean))


7.處理“空數(shù)據(jù)”


#取出某一列
data_tian=data["*天門冬氨酸氨基轉(zhuǎn)換酶"]
print(data_tian)

# 可以根據(jù)需求將某些值drop掉 axis=0 表示去掉有空數(shù)據(jù)的行
print(data_tian.dropna(axis=0))

# 可以根據(jù)需求驴娃,去掉在某些列(subset=)上為空的數(shù)據(jù)的行
print(data.dropna(axis=0,subset=["*天門冬氨酸氨基轉(zhuǎn)換酶"]))

# 可以根據(jù)需求去掉某些存在 空數(shù)據(jù)的  某些列
print(data.dropna(axis=1))

8.apply函數(shù)

8.1定義一個函數(shù),該函數(shù)只有一個參數(shù) 參數(shù)的類型為: 一個集合(DataFrame)

def get_first_Column(column):
    colu_1=column.loc[0]
    return colu_1

8.2可以直接調(diào)用集合(DataFrame)本身的apply函數(shù)循集,來調(diào)用自定義函數(shù)

data_first=data.apply(get_first_Column)
print(data_first)

8.3 例子一枚

統(tǒng)一集合各個字段為空數(shù)據(jù)的個數(shù)

def isnull_count(column):
    is_null=pandas.isnull(column)
    data_is_null=column[is_null]
    return len(data_is_null)


data_is_null=data.apply(isnull_count)
print(data_is_null)

9.Series

9.1介紹

DataFrame 的子結(jié)構(gòu) series
DataFrame 是series的集合 唇敞,series是數(shù)據(jù)的集合
series是DataFrame的某一列或某幾列。相當(dāng)于是numpy中的ndarray


from pandas import Series

School_Data=pandas.read_csv('yxxx.csv',encoding='gbk')
print(type(School_Data))

School_Data_code=School_Data["院校代碼"]
School_Data_name=School_Data["院校名稱"]

# print(School_Data_code)
# print(School_Data_name)
print(type(School_Data_code))

9.2手動的構(gòu)造一個Series

步驟:
①引包from pandas import Series,
②獲取兩個ndarray(其中一個當(dāng)索引疆柔,也可以沒有索引使用默認(rèn)的)

School_Data_code_values=School_Data_code.values
School_Data_name_values=School_Data_name.values

print(type(School_Data_code_values))


school_infor=Series(School_Data_name_values,index=School_Data_code_values)

#print(school_infor)


9.3獲取指定的數(shù)據(jù)

在指明了索引的情況下可以采用指定的索引來定位具體的數(shù)據(jù)蕉世,也可以根據(jù)默認(rèn)的索引獲取指定的數(shù)據(jù)

# 采用的是系統(tǒng)指定的索引
print(school_infor['10186'])
print(school_infor[['10186','10001']])

# 使用的是默認(rèn)的索引
print(school_infor[0:3])

9.4重構(gòu) Series的索引

可以對Series的索引進(jìn)行排序,然后重新定義Series的索引

#1.獲取舊Series的索引
school_index=school_infor.index.tolist()
print(type(school_index))

# 2.對索引進(jìn)行排序
school_index_sort=sorted(school_index)

# 3.重新設(shè)置Series的索引
school_infor_sort=school_infor.reindex(school_index_sort)

# print(school_infor_sort)

以上的步驟可以采用Series中的函數(shù)來處理

print(school_infor.sort_index())

當(dāng)然也可以針對Series的值進(jìn)行排序

print(school_infor.sort_values())

Series可以轉(zhuǎn)換成numpy中的ndarray來處理

print(help(numpy.add))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末婆硬,一起剝皮案震驚了整個濱河市狠轻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彬犯,老刑警劉巖向楼,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谐区,居然都是意外死亡湖蜕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門宋列,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昭抒,“玉大人,你說我怎么就攤上這事炼杖∶鸱担” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵坤邪,是天一觀的道長熙含。 經(jīng)常有香客問我,道長艇纺,這世上最難降的妖魔是什么怎静? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮黔衡,結(jié)果婚禮上蚓聘,老公的妹妹穿的比我還像新娘。我一直安慰自己盟劫,他們只是感情好夜牡,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捞高,像睡著了一般氯材。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硝岗,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天氢哮,我揣著相機(jī)與錄音,去河邊找鬼型檀。 笑死冗尤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裂七,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皆看,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了背零?” 一聲冷哼從身側(cè)響起腰吟,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎徙瓶,沒想到半個月后毛雇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡侦镇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年灵疮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壳繁。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡震捣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闹炉,到底是詐尸還是另有隱情蒿赢,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布剩胁,位于F島的核電站诉植,受9級特大地震影響祥国,放射性物質(zhì)發(fā)生泄漏昵观。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一舌稀、第九天 我趴在偏房一處隱蔽的房頂上張望啊犬。 院中可真熱鬧,春花似錦壁查、人聲如沸觉至。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽语御。三九已至,卻和暖如春席怪,著一層夾襖步出監(jiān)牢的瞬間应闯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工挂捻, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留碉纺,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像骨田,于是被迫代替她去往敵國和親耿导。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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