python pandas 官网_Python库-Pandas

Pandas是基于NumPy的一种数据分析工具,提供了大量使我们快速便捷处理数据的函数和方法。

Pandas基于两种数据类型:Series数组与DataFrame数据表。

Series对象(带索引index的一维数组)

import pandas as pd

from pandas import Series,DataFrame

import numpy as np

#创建Series数组

list1 = [1,2,3,4]

sel = Series(list1) #默认索引为从0开始的序列

sel = Series(data = [1,2,3,4],index = list('abcd')) #创建Series对象并创建索引

print(sel.values)#.values 拿到series中数据

print(sel.index)# .index 拿到series中索引

print(list(sel.iteritems()))#.iteritems()拿到series中键值对

#Series结构类似字典

#将字典转换为Series

dic = {"red":"100","black":"400","green":"300"}

se2 = Series(dic)

#修改Series索引值

se1.index = list('dcba') #直接修改原Series的索引

#.reindex 返回一个新的Series 重新排序 缺失值用nan代替

se2 = se1.reindex(['a','b','c','d','e'])

#Series值的获取,可通过索引和下标两种方式。

print(se1['b']) #通过index值获取

print(sel[1]) #通过下标

#通过切片获取值

print(se1[0:2]) #通过下标,左包含右不包含。

print(se1['a':'c']) #通过索引,左右都包含。

DataFrame对象(DataFrame是一种二维数据表结构,分为若干列和行,行索引index,列索引columns)

DataFrame的创建

df1 = DataFrame(np.random.randint(0,10,(4,4)),index = [1,2,3,4],columns = ['a','b','c','d']) #通过二维数组创建,指定参数Data,index和columns。

#通过字典创建DataFrame

dict = {

'province':['Guangzhou','Beijing','Shanghai','Fujian'],

'pop':[1.3,2.5,1.1,0.7],

'year':[2018,2018,2018,2018]

}

df2 = DataFrame(dict,index = [1,2,3,4])#字典中的key为列索引。

DataFrame中常用属性和方法

print(df.shape) #行数和列数

print(df.index.tolist()) #获取行索引

print(df.columns.tolist()) #获取列索引

print(df.ndim)#获取维度

print(df.info()) #.info()方法展示概述

print(df.head(2)) #显示头几行

print(df.tail(1)) #显示后几行

获取DataFrame数据

#获取DataFrame列

print(df['pop']) #获取列,每列都是Series对象

print(df[['pop','year']]) #获取多列

#获取DataFrame行

print(df[0:2]) #通过行下标切片的方式获取行

#通过loc和iloc方法获取数据

#.loc通过索引获取数据

#.loc获取列,切片方式。

df.loc[:,'pop'] #获取单列

df.loc[:,'pop':'province'] #通过切片获取连续列

#.loc获取行

df.loc[1] #获取单行

df.loc[1,:] #获取单行

df.loc[1:3,] #获取连续行,左右都包含。

#.iloc通过位置下标获取数据

df.iloc[0:2,0:2]

DataFrame修改index和columns

df = DataFrame(np.arange(9).reshape(3,3),index = ['bj','sh','gz'],columns = ['a','b','c'])

df.index = ['beijing','shanghai','guangzhou'] #直接修改属性值

df1 = df.rename(index = {'bj':"beijing"},columns = {'a':'A'}) #通过.rename方法修改index和columns

DataFrame中将列转换为行索引

df1 = DataFrame({"x":range(5),"y":range(5),'s':list("abcde"),"z":[1,2,3,4,5]})

#result = df1.set_index('s',drop = False) #将s列转换为行索引drop = False 保留作为索引的列

result = df1.set_index('s')

result.index.name = None #通常将数据库中数据取出后 将id作为行索引

print(result)

s x y z

0 a 0 0 1

1 b 1 1 2

2 c 2 2 3

3 d 3 3 4

4 e 4 4 5

x y z

a 0 0 1

b 1 1 2

c 2 2 3

d 3 3 4

e 4 4 5

DataFrame中添加列

#在末尾直接添加列

df = pd.DataFrame([['snow','m',22],['tyrion','m',32],['sansa','f',18],['arya','f',14]],columns = ['name','gender','age']

df['score'] = [80,98,67,90] #在末尾添加一列

#通过添加列索引的方法添加列

column_name = df.columns.tolist() #将列名转换为列表

column_name.insert(2,'city') #在列表指定位置插入新的列索引

df = df.reindex(columns = column_name)#通过.reindex方法更新索引

df['city'] = ['beijing','shanxi','hubei','aomen'] #添加数据

#通过DataFrame中.insert方法添加列

df.insert(2,'score',[80,90,67,90]) #dataframe 提供insert方法 在指定位置添加列

DataFrame中添加行

#通过.append方法添加行

df = pd.DataFrame([['snow','m',22],['tyrion','m',32],['sansa','f',18],['arya','f',14]],columns = ['name','gender','age']

row = pd.DataFrame({'name':'fy','gender':'m','age':23},index = [0]) #生成带添加的行

df = df.append(row,ignore_index = True) #ignore_index = True 按照原来的索引

DataFrame创建多层索引

#1

df = pd.DataFrame(np.random.randint(0,150,size = (6,4)),

columns = ['zs','ls','ww','zl'],

index = [['a','a','b','b','c','c'],['期中','期末','期中','期末','期中','期末']])

#2

class1 = ['a','a','b','b','c','c']

class2 = ['期中','期末','期中','期末','期中','期末']

m_index2 = pd.MultiIndex.from_arrays([class1,class2])

df2 = pd.DataFrame(np.random.randint(0,150,(6,4)),index = m_index2)

#3

class2 = ['a','b','c']

class1 = ['期中','期末']

m_index2 = pd.MultiIndex.from_product([class1,class2])

df3 = pd.DataFrame(np.random.randint(0,150,(6,4)),index = m_index2)

0 1 2 3

期中 a 79 22 5 2

b 47 44 25 80

c 40 61 131 60

期末 a 127 46 144 44

b 24 128 110 81

c 79 133 33 18

Tips:Pandas内容很多,还包括时间序列和分组聚合等,在实例中熟悉。

2020-04-04 16:28

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值