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 的时候,主要有两种思路

  1. 数据为字典类的格式, 是以的方式进行组织, 字典的 key 将会作为列名,字典的值value作为列的数据.

  2. 数据为列表类形式, 是以的方式进行组织的, 列名需要用参数传入进去.

#字典的方式传入数据
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.掩码提取数据

# 提取 30 - 100 之间的英雄
df[ (df.年龄 >= 30 )  & (df.年龄 <= 100)  ] 


# 年龄为偶数 或 城市为 纽约
df[ (df.年龄 % 2 == 0)  |    (df.城市 == '纽约') ]

  

 

重点:1. 构建Series 2. 索引和切片 3. 序列值索引  4. DataFrame 构建  5. 从本地读取 read_csv , 写入到本地 to_csv 6. DataFrame 的索引和切片

7. 查看基本信息 df.head  df.shape df.info() df.T  8. 掩码提取数据 
 
 
posted @ 2019-10-15 23:01  小稣  阅读(385)  评论(0编辑  收藏  举报