Pandas库04_DataFrame数据结构_索引与选取

Posted 笑来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas库04_DataFrame数据结构_索引与选取相关的知识,希望对你有一定的参考价值。

import pandas as pd

data={
"name":["唐浩","小王","老王","赵三","李四"],
"sex":["男","女","男","女","男"],
"year":[37,22,15,18,33],
"city":["成都","北京","上海","成都","深圳"]
}

#DataFrame的排序sort_values(by="字段即key")
#eg:
# df1=pd.DataFrame(data)
# print(df1)
# print("_______________________-")
# df2=df1.sort_values(by="year") #只是排序了,但索引顺序没有变,
# print(df2)
# print("_______________________-")
# #我们将原索引顺序删除就行了
# df3=df2.reset_index() #重建索引,不删除原索引
# print(df3)
# df4=df2.reset_index(drop=True) #重建索引,删除了原索引
# print(df4)

#数据选取
#Series数据的选取与列表差不多,大同小异,就不多说,下面讲DataFrame,他要复杂一些

df5=pd.DataFrame(data)
# print(df5)

#选取列,有两种方式:df5["name"]或df5.name,都能获取到,返回一个Series数据列
# print(df5["name"])
# print(df5.city)
#选取多列
# print(df5[["name","city"]])
#选取列不能用切片,切片是对行操作的,不过当你选取列后的数据操作是可以切片的

#选取行,loc,iloc,ix等
# print(df5)
# df6=df5.set_index("name") #将某列设为索引标签列
# print(df6)
# print(df6.loc["唐浩"]) #通过索引标签来选取 loc["这里面必须要是索引标签,其它报错"]
# print("______________")
# print(df6.loc[["唐浩","老王"]]) #通过多个索引标签来选取
#同上,iloc[1] 这是索引位置来选取。

#高级方式,选取行和列ix
# print(df5)
# df6=df5.set_index("name")
# df6=df5.ix[:,:] #选取所有行列,ix[行,列]
# print(df6)
# df6=df5.set_index("name") 设了才能用下面这个,不设就只能用索引号
# df7=df6.ix[["唐浩","李四"],:]
# df8=df5.ix[:,["name","sex"]]
# print(df8)
# df9=df5.ix[0]
# print(df9)

######条件bool选择,相当于用值进行选择嘛,第一层得到 bool,第二层得到相关的数据
# print(df5)
# df10=df5[(df5["city"]=="成都") & (df5["sex"]=="男")]
# df10=df5[(df5["city"]=="成都") & (df5["sex"]=="男")] #相当于条件筛选了
# df11=df5[(df5["year"]>20) & (df5["sex"]=="男") &(df5["city"]=="成都")] #相当于多重条件筛选了
# print(df11)
# print(df11.sort_values("year"))


#操作行与列:即 增 、 删 、 改 、 查(选择,前面学了)
# print(df5)
"""
name sex year city
0 唐浩 男 37 成都
1 小王 女 22 北京
2 老王 男 15 上海
3 赵三 女 18 成都
4 李四 男 33 深圳
"""
#就在上面表里面操作吧

#增 新增行 df5.append(字典型数据)
# newdata={"name":"小红","sex":"女","year":20,"city":"中江"}
# df6=df5.append(newdata,ignore_index=True) #产生一个新数据,原数据不变,df5不变
# #要想改变原数据,就df5=df5.append(...)
# print(df6)
# #新增列
# df5["love"]="小狗" #为一个不存在的列名赋值就新增了一列了,但是所有数据都是相同的,
# print(df5)
# df5["wwww"]=["abc","def","abbbb","xxxxxx","dfdfsfds"] #不多不少,刚好那么多就不会报错
# print(df5)

#删除
# df8=df5.drop(1) #原数据不变,即df5没变化,drop(位置) 删除行
# print(df8)
# df9=df5.drop("year",axis=1) #axis 1为x轴找,0为y轴找。 删除列
# print(df9)

#修改,这里的修改讲的是行和列索引与列标签的修改,没讲到值修改

# df10=df5.ix[[1,2,4],:]
# print(df10)
# df11=df10.rename(index={4:3},columns={"city":"CITY"},inplace=False) #True是在原数据上修改
# print(df11)
# df11["name"][1]="小李子"
# print(df11)

以上是关于Pandas库04_DataFrame数据结构_索引与选取的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pandas Dataframe KeyError: False 中索引出数字的值

Pandas库06_DataFrame数据结构_汇总与统计

Pandas库05_DataFrame数据结构_运算

Pandas库02_DataFrame数据结构

Pandas库03_Series和DataFrame数据结构_重索引

Pandas库01_Series数据类型