Pandas应用总结

一.取值
1.取i行j列的单元格:

df.iloc[[i], [j]] 取出后为df
df.iloc[[i], [j]].values[0][0]   先取出df,随后取df二维数组的值
df.iloc[i, j]     直接取值

2.取某几行

df.iloc[i:j]  

3.取某几列

df.iloc[,i:j] 
df.loc[:, ['column_name_1', 'column_name_2']]
df[['column_name_1', 'column_name_2']]

4.取某几行某几列

df.iloc[i:j,k:l] 

5.取不连续的某几行某几列

df.iloc[[i, k, j][l, k]] 

6.取某一列

df.iloc[,[i]]   取出后为df
df.iloc[, i]    取出后为series
df.column_name  取单列,取出后为series
df['column_name']  取单列,取出后为series
df[['column_name']]  取单列,取出后为df

7.取某一行

df.iloc[[i]]   取出后为df
df.iloc[i]     取出后为series

8.获取df数据类型

df.info()     获取数据表基本信息(维度、列名称、数据格式、所占空间等)
df.shape      获取df行数和列数,以元组返回
df.dtypes     获取df数据类型,注意无括号
df['column_name'].dtype   获取某一列的数据类型

二.iloc与loc的异同:
1.iloc与loc行操作相同
2.iloc的列不能用列标签;loc的列只能用列标签,不能用索引或切片,除非用全切片
3.iloc左闭右开;loc左闭右闭*

三.一些常用的Pandas使用

series_name.to_frame()    将series转换为Dataframe

四.一些知识点
python缺失值有4种:
1)Python内置的None值显示为None,使用df[‘date’].isnull()进行判断是否为空值。
2)Pandas中缺失值表示为NA,表示不可用not available。
3)Pandas对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。
4)Pandas对于日期数据,pandas使用浮点值NaT(Not a Timestamp)表示缺失数据。

对缺失值进行填充:

df['column_name'] = df['column_name'].fillna('')   对缺失列进行填充
df = df.fillna('')     对df所有缺失列值进行填充
df = df.fillna('').iloc[0:10, 0:5]     对df指定值进行填充

对NaT缺失值进行操作:

df['column_name'] = df['column_name'].fillna('1900-01-01 00:00:00')

向量化操作:

# 方法一:使用lambda
df.column_name= df.column_name.apply(lambda x: (str(x)).split('.')[0])

# 方法二:使用自定义方法
def replace_category_value(参数):
	参数 使用相关代码
	return
df.column_name= df.column_name.apply(replace_category_value)

转换数据类型

s.astype('float') 强制将Series中的数据类型更改为float类型
df['column_name'].astype('int64')   强制将df中的某列转换为int64类型
pd.to_datetime(df['column_name'])   将某列转为时间类型 

替换

s.replace(1,'first')   Series用‘first’代替所有等于1的值(替换的是值,不是列名也不是索引名)
s.replace([1,3],['one','three'])   Series用'one'代替1,用'three'代替3
df[col].replace(1,1.0,inplace=True)   df指定列中的值11.0替换
df.replace([1,3],['one','three'])   df中用'one'代替1,用'three'代替3

删除某一列

del df['column_name']    删除某一列(只能删除一列)

将某一列转为list

list_a = df['column_name'].tolist()

排序(一列或多列(如果所有列名都传入则是按全部列排序))

dataframe.sort_values(by=columns, inplace=True)

索引

set_index(keys='column_name')  将数据表中指定的某列设置为索引或复合索引

keys:列标签或列标签/数组列表,需要设置为索引的列
drop:默认为True,删除用作新索引的列,也就是当把某列设置为索引后,原来的列会移除
append:是否将列附加到现有索引,默认为False
inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False

reset_index(inplace=True, drop=True)   将数据表中的索引还原为普通列并重新变为默认的整型索引

level:数值类型可以为:int、str、tuple或list,默认无,仅从索引中删除给定级别。默认情况下移除所有级别。控制了具体要还原的那个等级的索引
drop:当指定drop=False(默认为False)时,则索引列会被还原为普通列;否则,如设置为True,原索引列被会丢弃
inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False

df.reindex([index_1, index_2, index_3])   对行重置索引
df.reindex(columns=['column_name_1','column_name_2','column_name_3'])   对列重置索引
df.reindex([index_1,index_2,index_3],columns=['column_name_1','column_name_2','column_name_3'])   同时对行和列进行重索引

dataframe中执行sql

from pandasql import sqldf

def sample(file_name, sheet_name, skiprows):
    file = os.path.join(FILE_DIRECTORY, file_name)
    df_1 = get_file_content(file=file, sheet_name=sheet_name, skiprows=skiprows)

    sql = 'select * from df_1 where Status == "Request Approved" '
    df_2 = sqldf(sql)
    return df_2

直接获取dataframe列名的list

list_a = list(df_1)

两个df比较的常用方法
使用datacompy包即可

import datacompy
c = datacompy.Compare(df, df2, join_columns=['a''b', 'c'])  # join_columns 类似主键,会根据这些列join, 可传入多个值作为联合主键 
print(c.report(sample_count=1000, column_count=1000))  # 可通过sample_count, column_count设置report展示的最大行数

Pandas教程
Link

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值