Pandas数据结构和基本功能
Posted bc10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas数据结构和基本功能相关的知识,希望对你有一定的参考价值。
Pandas通常是用于数据分析过程中, 数据的清洗, 数据预处理, 数据的描述性分析等过程中。在整个Python数据分析的生态环境中, Pandas的地位非常重要, 利用Pandas可以快速便捷的对数据进行各种各样的处理与操作。可以说是升级版的Excel。Pandas是基于Numpy的一个数据分析包, 它里面的内核是Numpy。
在Pandas中, 最重要的两种数据结构是1维的Series和2维的DataFrame.
Series:一维数组,与Numpy中的一维array类似。Series中能保存不同种数据类型,字符串、boolean值、数字等都能保存在Series中。但是每个Series中只能保存一种数据结构.
DataFrame:二维的表格型数据结构。有多个Series共同构成的集合就变成DataFrame。
一、Series
1.手动构建Series
data = np.array([22, 3000, 33, 37, 40, 1500]) data
test = pd.Series(data)
test
还可以对Series进行一些拓展:
s = pd.Series(data ,name=‘英雄年龄‘ , index= [‘蜘蛛侠‘, ‘灭霸‘, ‘奇异博士‘, ‘钢铁侠‘, ‘蝙蝠侠‘, ‘索尔‘]) s
2.Series的索引和切片
显式索引-----字典索引
隐式索引-----列表索引
对于 Series 的索引和切片,我们可以有两种思路,一种是把它当做是一个字典,索引就是字典的 key,数据就是字典的 value。
s[‘钢铁侠‘] s[‘灭霸‘:‘钢铁侠‘:2]
Series 除了像 dict 外,也非常像 ndarray,这也就意味着可以采用切片操作。
s[-1] s[::2] = 100
如果想要更复杂的提取方式,可以直接采用索引值去进行数据的提取。同样也分为:显式索引和隐式索引。
s[ [0, 1, -1] ] s[[‘蜘蛛侠‘, ‘灭霸‘, ‘索尔‘] ]
df.pop()可以弹出指定数据
df.drop() 可以删除指定数据
3.广播的方法
s + 1 np.log(s) np.mean(s) s.mean()
二、DataFrame
DataFrame 是一个带有索引的二维数据结构,每列可以有自己的名字,并且可以有不同的数据类型。你可以把它想象成一个 excel 表格或者数据库中的一张表,DataFrame 是最常用的 Pandas 对象。
1.构建DataFrame
在构建 DataFrame 的时候,主要有两种思路
-
数据为字典类的格式, 是以列的方式进行组织, 字典的 key 将会作为列名,字典的值value作为列的数据.
-
数据为列表类形式, 是以行的方式进行组织的, 列名需要用参数传入进去.
#字典的方式传入数据
data = { "年龄":[19, 3000, 30, 37, 40, 1500], "城市":["纽约皇后区", "泰坦星球","费城", "纽约", "哥谭", "阿斯加德" ], "装备":[‘蜘蛛战服‘,‘无限手套‘,‘披风‘,‘动力装甲‘,‘蝙蝠战衣‘,‘雷神之锤‘] } index = [‘蜘蛛侠‘, ‘灭霸‘, ‘奇异博士‘, ‘钢铁侠‘, ‘蝙蝠侠‘, ‘索尔‘]
df = pd.DataFrame(data=data,index=index )
#列表的方式传入数据 data = [ [19, "纽约皇后区",‘蜘蛛战服‘], [3000, "泰坦星球",‘无限手套‘], [30, "费城",‘披风‘], [37, "纽约",‘动力装甲‘], [40, "哥谭",‘蝙蝠战衣‘], [1500, "阿斯加德",‘雷神之锤‘] ] data df = pd.DataFrame(data, columns=[‘年龄‘, ‘城市‘,‘装备‘], index=index)
也可以从本地磁盘读取数据
2.DataFrame 的索引和切片
1)提取数据表中的列, 是最常用的操作之一, 因此这个操作也非常简单.
df[‘年龄‘]
2)在显示索引中,把 DataFrame 的索引值当做第一个轴的 key,把列名当做第二个轴的 key
# 例如我现在想要灭霸的年龄,则需要通过行索引"灭霸" 和列索引"年龄" 去进行定位 df.loc[‘灭霸‘,‘年龄‘]
3)序列值索引
我们注意到, 上面的那种索引方式其实有一定的局限性, 如果想要索引的值并没有规律的 步长, 恐怕就做不到了!
语法 df.loc[索引行,索引列 ]
# 蜘蛛侠,灭霸, 蝙蝠侠的城市 df.loc[[ ‘蜘蛛侠‘,‘灭霸‘,‘蝙蝠侠‘] , ‘城市‘] # 显式索引 # 两个坐标轴都可以这样做,而且不用考虑原数据的顺序 # 奇异博士,钢铁侠和蜘蛛侠的年龄和城市信息 df.loc[ [‘奇异博士‘,‘钢铁侠‘,‘蜘蛛侠‘] ,[‘年龄‘,‘城市‘] ]
4)隐式索引
使用 iloc
也就是 index_loc
这种方式不看你的行索引和列索引是什么名称,可以把数据当做是一个有序列表, 只看数据是处于表中的一个什么位置.
df.iloc[0::, 0::]
3.新增/删除列
在生成了 DataFrame 之后,突然你发现好像缺失了用户的性别这个信息,如何添加呢?如果所有的性别都一样,我们可以通过传入一个标量,Pandas 会自动帮我们广播来填充所有的位置。
# 使用显示索引的方式进行添加 df.loc[‘黑寡妇‘] = [43,‘前苏联‘,‘手枪‘]
df[‘性别‘] = ‘男‘ # 新增一列 性别 df
4.掩码提取数据
以上是关于Pandas数据结构和基本功能的主要内容,如果未能解决你的问题,请参考以下文章