1.查看基本信息
1.df.info()
user_infor=pd.read_csv("new_infor.csv",index_col="索引名") #index_col是指定原表列做索引
user_infor.info()
輸出:<class 'pandas.core.frame.DataFrame'>
Int64Index: 8 entries, 0 to 7 # 描述索引:長(zhǎng)度為8绍哎,0-7
Data columns (total 5 columns): # 數(shù)據(jù)共5列
# Column Non-Null Count Dtype # Non-Null代表非缺失數(shù)據(jù)個(gè)數(shù)
--- ------ -------------- -----
0 Hero Name 8 non-null object
1 Age 8 non-null int64
2 Sex 8 non-null object
3 Birthplace 8 non-null object
4 weapon 8 non-null object
dtypes: int64(1), object(4) # 不同數(shù)據(jù)類型數(shù)量統(tǒng)計(jì)
memory usage: 384.0+ bytes
2.df.head(num) #查看頭部幾行
df.tail(n) #尾部幾行
3.df.shape #查看形狀
4.df.T #矩陣轉(zhuǎn)置,注意與tail和head的連用
5.df.values 轉(zhuǎn)為ndarray
2.描述與統(tǒng)計(jì)
2.1 常用統(tǒng)計(jì)指標(biāo)
指標(biāo) | 描述 |
---|---|
count() | 計(jì)數(shù)項(xiàng) |
first()鞋真、last() | 第一項(xiàng)和最后一項(xiàng) |
mean()崇堰、median() | 均值與中位數(shù) |
min()、max() | 最大值與最小值 |
mode() | 眾數(shù) |
std()涩咖、var() | 標(biāo)準(zhǔn)差與方差 |
mad() | 均值絕對(duì)偏差 |
prod() | 所有項(xiàng)乘積 |
sum() | 所有項(xiàng)求和 |
語(yǔ)法: df.指標(biāo)函數(shù)()
注意:
1)Numpy沒有眾數(shù)方法海诲,其他Numpy方法用法:np.指標(biāo)方法(數(shù)據(jù))
2)DF中的列可以取出后相加,就像矩陣相加
#生成第二個(gè)總分列抠藕,計(jì)算語(yǔ)文+數(shù)學(xué)成績(jī)的總分饿肺,命名為‘總分2’
grade['總分2'] = grade['語(yǔ)文']+grade['數(shù)學(xué)']
#計(jì)算每個(gè)同學(xué)的‘?dāng)?shù)學(xué)減去語(yǔ)文’的成績(jī),取絕對(duì)值盾似,命名為‘文理偏科值’敬辣。
np.abs(grade['數(shù)學(xué)']-grade['語(yǔ)文'])
2.2 df.describe() 批量返回?cái)?shù)值列統(tǒng)計(jì)指標(biāo)
源數(shù)據(jù)grade
grade=pd.read_csv('student_grade.txt',sep='\t')
# 只支持?jǐn)?shù)值列,dtypes:數(shù)值
grade.describe()
describe()
如果想要查看非數(shù)字類型的列的統(tǒng)計(jì)指標(biāo),可以設(shè)置
include=["object"]
來獲得零院。include:top與freq組合出現(xiàn)
2.3 Series.value_counts() 查看頻率
1.查看某列數(shù)據(jù)頻率
DF對(duì)象['列名'].value_counts()
2.查看多列:先取DF對(duì)象的列List溉跃,再查看
c=[]
for i in user_infor.columns:
d=user_infor[i].value_counts()
c.append(d)
---
輸出:
索爾 1
黑寡婦 1
神奇女俠 1
奇異博士 1
鋼鐵俠 1
滅霸 1
蜘蛛俠 1
蝙蝠俠 1
Name: Hero Name, dtype: int64
---
3.離散化
3.1 pd.cut()
將數(shù)據(jù)按標(biāo)準(zhǔn)分段(分箱),區(qū)間默認(rèn)為左開右閉
3.2 pd.qcut()
除了可以使用 cut 進(jìn)行離散化之外告抄,qcut 也可以實(shí)現(xiàn)離散化撰茎。cut 是根據(jù)每個(gè)值的大小來進(jìn)行離散化的,qcut 是根據(jù)每個(gè)值出現(xiàn)的次數(shù)來進(jìn)行離散化打洼,也就是基于分位數(shù)的離散化功能龄糊。
4.排序
4.1 df.sort_index()
df.sort_index() #按索引標(biāo)簽?zāi)J(rèn)升序
df.sort_index(ascending=False) #按索引標(biāo)簽降序排
4.2 df.sort_values()
按給定值排,多條件用[]嵌套
user_info.sort_values(by = ['Age',"Power"],ascending = [False,True])
4.3 series.nlargest(n)
取最大的n行數(shù)據(jù)
5. 函數(shù)應(yīng)用及映射
5.1 Series.map()
1)利用字典去對(duì)應(yīng)(映射)更改列值(區(qū)別于直接修改的一一對(duì)應(yīng))
2)利用自定義函數(shù)
5.2 Series.apply()和df.apply()
apply 方法既支持 Series募疮,也支持 DataFrame炫惩,在對(duì) Series 操作時(shí)會(huì)作用到每個(gè)值上,在對(duì) DataFrame 操作時(shí)會(huì)作用到所有行或所有列(通過 axis參數(shù)控制)阿浓。
# 對(duì) Series 來說他嚷,如果使用自定義函數(shù)映射的方法,apply 方法 與 map 方法區(qū)別不大芭毙。
earth_city=['紐約','費(fèi)城','紐約','哥譚','天堂島',"斯大林格勒","科羅拉多州"]
def func(x):
if x in earth_city:
return "地球人"
else:
return "外星人"
heros.Birthplace.apply(func) #這里只是將上一小節(jié)中的Series.map()換成了.apply()筋蓖,其余代碼一樣
對(duì) DataFrame 來說,apply 方法的作用對(duì)象是一行或一列數(shù)據(jù)(一個(gè)Series)
- axis為0或'index':將函數(shù)應(yīng)用于每列退敦。
- axis為1或'columns':將函數(shù)應(yīng)用于每一行粘咖。
def max_01(x):
return x.max()
# heros.Sex.value_counts()[0]
heros.apply(func=max_01,axis=0)
輸出:
Hero Name 黑寡婦
Age 3000
Sex 男
Birthplace 阿斯加德
weapon 魔法
Power 140
dtype: object
pandas中map()、apply()侈百、applymap()的區(qū)別:
- map()方法適用于Series對(duì)象瓮下,可以通過字典或函數(shù)類對(duì)象來構(gòu)建映射關(guān)系對(duì)Series對(duì)象進(jìn)行轉(zhuǎn)換忠聚;
- apply()方法使用與Series對(duì)象、DataFrame對(duì)象唱捣、Groupby對(duì)象两蟀,處理的是行或列數(shù)據(jù)(本質(zhì)上處理的是單個(gè)Series),用函數(shù)類對(duì)象來構(gòu)建映射關(guān)系對(duì)Series對(duì)象進(jìn)行轉(zhuǎn)換震缭;
- applymap()方法用來處理DataFrame對(duì)象的單個(gè)元素值赂毯,也是使用函數(shù)類對(duì)象映射轉(zhuǎn)換;