pandas基础操作

pandas中最基础的数据结构叫做DataFrame,类似excel中的表结构,包含栏与列的集合,可根据栏与列操作数据,类似R的DataFrame。

下面来看一些基础操作,在数据清洗与处理阶段,这些操作需熟练掌握。

1.建立DataFrame

import pandas as pd 
data = pd.DataFrame([['jerry','M',36],['emma','F',23],['tony','M',34]])
data

0	1	2
0	jerry	M	36
1	emma	F	23
2	tony	M	34

  增加字段名称

data.columns = (['name','gender','age'])
data

name	gender	age
0	jerry	M	36
1	emma	F	23
2	tony	M	34

  一般情况下,我们不会手动建立这种DataFrame,而是与数据库连接,直接将需要的数据导出转化为DataFrame,方便接下来的处  理。

rs = pd.DataFrame(result,columns=["account_id","state"])

2.取样前/后数笔资料

rs.head()

rs.tail()

3.取得DataFrame基本信息

  • 取得基本描述
data.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
name      3 non-null object
gender    3 non-null object
age       3 non-null int64
dtypes: int64(1), object(2)
memory usage: 88.0+ bytes
  • 取得基本统计
data.describe()

age
count	3.0
mean	31.0
std	7.0
min	23.0
25%	28.5
50%	34.0
75%	35.0
max	36.0
  • 取得基本形态
data.dtypes

name      object
gender    object
age        int64
dtype: object
  • 取得行与列的数量
data.shape
(3, 3)

#增加一行,方便下面数量的演示
data.loc[4] = {'age':20,'gender':'M','name':'bob'}

name	gender	age
0	jerry	M	36
1	emma	F	23
2	tony	M	34
4	bob	M	20

#检查行数
data.shape[0]
4

#检查列数
data.shape[1]
3
  • 查看DataFrame包含哪些列
data.columns

Index(['name', 'gender', 'age'], dtype='object')

4.存取与切割元素

  • 对行操作
#选取最前面的元素,注意下标从0开始,三种方式可任选一种
data.iloc[1]
data.loc[1]
data.ix[1]

name      jerry
gender        M
age          36
Name: 0, dtype: object


#选取多行,注意不包含最后面的下标
data.iloc[1:3]
data.loc[1:3]
data.ix[1:3]

name	gender	age
1	emma	F	23
2	tony	M	34
  • 对列操作
#选取特定的一列
data["name"]

0    jerry
1     emma
2     tony
4      bob
Name: name, dtype: object

#选取多列
data[["name","gender"]]

name	gender
0	jerry	M
1	emma	F
2	tony	M
4	bob	M
  • 选取满足特定行与列的数据
data.ix[1:2,['name','age']]

name	age
1	emma	23
2	tony	34
data[data["age"] == 23]

#与条件
data[(data["gender"] == "M") & (data["age"] == 23)]

#或条件
data[(data["gender"] == "M") | (data["age"] == 23)]

5.新增与删除行与列

#增加列
data["employee"] = True

name	gender	age	employee
0	jerry	M	36	True
1	emma	F	23	True
2	tony	M	34	True
4	bob	M	20	True

#删除列
del data["employee"]
##方法2,axis =1 代表按照列删除,默认为0,即按照行删除
data = data.drop("employee",axis = 1)

name	gender	age
0	jerry	M	36
1	emma	F	23
2	tony	M	34
4	bob	M	20
  • 删除多列,用drop方法,del每次只能删除一列,并且效率没有drop高
data.drop(["test","test2"],1)

  注意:关于drop方法有一个可选参数inplace,需要了解,详细内容见Python drop方法删除列之inplace参数

  增加行的操作上面已经演示过。工作中较少用。

6.缺失值

  • 检查某列是否含有缺失值
#检查gender列是否含有缺失值
data["gender"].isnull()

data["gender"].notnull()

#检查gender列是否还有缺失值
data["gender"].isnull().values.any()

#检查整个DataFrame是否还有缺失值
data.isnull().values.any()
  • 计算缺失值的数量
#计算各列缺失值的数量
data.isnull().sum()

#计算总的缺失值数量
data.isnull().sum().sum()
  • 关于缺失值的处理主要有三种方法,一是舍弃缺失值,二是使用平均值,中位数,众数等描述性统计量填充,三是使用内插法补齐缺失值
#舍弃含有任意缺失值的行
data.dropna()

#舍弃所有列都含有缺失值的行
data.dropna(how="all")

#舍弃超过两列含有缺失值的行
data.dropna(thresh=2)
#用0填补缺失值
data.fillna(0)

#用年龄的平均值填补年龄这列的缺失值
data['age'].fillna(data["age"].mean())

#用各性别年龄的平均值填补缺失值
data['age'].fillna(data.groupby("gender")["age"].transform("mean"))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值