Pandas处理表格的基础操作

一直使用pandas进行表格数据的处理,但是很多命令经常忘记,都是现用现查,很花费时间,所以这里记录一下经常使用的基础操作,方便自己查阅,也给大家提供一些方法参考。

仅供学习参考,转载请标明出处,作者也是小菜鸡,有更好的处理方式欢迎友好讨论~~~

1. 包和数据导入

导入pandas,并导入常见的excel和csv文件

import  pandas as pd
data1 = pd.read_csv('filename.csv',encoding = 'gb2312')
data2 = pd.read_excel('filename2.xlsx')

其中的 encoding = 'gb2312'是中国的字库,仅涵盖了汉字和一些常用外文,但和’UTF-8’比起来加载速度更快。
某次在导入csv文件不成功时,发现了这个方法,然后就一直沿用了。

如果需要读特定的sheet,在参数中加入sheet_name = sheet_name即可,不指定时默认读取第一个表格。

注意在数据位置和代码位置不一致,使用绝对路径时,用 / 或者 \\ 进行分割,而不是 \

import pandas as pd
df = pd.read_csv('C:\\Users\\Administrator\\codes for jupyter\\Blog\\creditcard.csv')
df = pd.read_csv('C:/Users/Administrator/codes for jupyter/Blog/creditcard.csv')
# 会报错
# df = pd.read_csv('C:\Users\Administrator\codes for jupyter\Blog\creditcard.csv')

2. 查看表格的基本信息

使用jupyter notebook的同学可以简单粗暴地,直接输出表格来看看~
或者用以下的方式

2.1 基本信息查看

n = 7
print(df.head(n))       # 显示前n行,不填默认是5
print(df.tail())        # 显示最后n行,不填默认是5 
print(df.info())        # 显示 column名、是否存在空值、数量、dtype
print(df.describe())    # 对数量数据显示count、mean、std、min、25%、50%、75%、max

结果如下

head()显示前n行,不填默认是5
在这里插入图片描述
tail()显示最后n行,不填默认是5
在这里插入图片描述
info()显示 column名、是否存在空值、数量、dtype
在这里插入图片描述
describe() 对数量数据显示count、mean、std、min、25%、50%、75%、max
在这里插入图片描述

2.2 查看行、列

可以用df.columns查看表格的所有行名,用df.index查看表格的索引。也可以用这两个属性进行赋值。

columns = []
for i in range(31):
    s = 'col' + str(i)
    columns.append(s)
df.columns = columns    #赋值
print(df.columns)       #查看columns
print('--------')
print(df.index)         #查看index

结果如下
在这里插入图片描述
df[column_name]或者df.column_name可以查看’column_name’对应列向量的值,
df.loc[index]可以查看 ‘index’ 列对应的行,
df.loc[index,column_name]查看第index行第column_name列的值,注意是方括号不是圆括号哦~

print(df.loc[12,'col1'])    #index为12,column为'col1'
print('--------')
print(df['col1'])           #查看'col1'列向量
print('--------')
print(df.loc[12])           #查看第12行向量

结果如下 (行向量太长了没有展示全)
在这里插入图片描述

2.3 迭代查看其中的信息

df.iterrows()可以迭代查看表格的信息

for idx,value in df.iterrows():
    print(idx)
    print(value)
    print(value[column_name])

其中idx返回索引,value会逐个返回idx那一行的值。可以用value[column_name]逐个查看column_name这一列的取值, 效果和df.loc[idx,column_name]是一样的

2.4 使用表格“内容”

当不需要列名、行名等信息,只需要表格的内容时,用df.values查看表格内容

3. 删除、修改

3.1 删除、修改值

使用df.drop(index)删除某行 ,使用df.drop(column_name, axis = 1)删除某列。注意要将删除后的表格重新赋值给变量名,如下

df.drop('col2',axis = 1)
print(df.columns)
print('--------')
df = df.drop('col2',axis = 1)
print(df.columns)

可以从两次输出结果看出区别,第一次drop之后’col2’是仍然存在的,第二次重新赋值后才成功drop掉,所以记得要重新赋值哦~
在这里插入图片描述
修改:直接进行赋值即可

# 一些例子
df.loc[12,'col23'] = 0
df.loc[100] = range(30)

3.2 修改某一列的属性

我们读入excel文件时,经常会出现文本变量被读入作整数变量的情况,这时可以用df[column_name]=df[column_name].astype(new_type)
进行重新赋值。注意astype之后一定要重新赋值哦~

4.增加行、列

4.1 增加行

直接进行赋值即可

  • 当index以数字命名时,因为len(df)是表格的函数是从1开始的,而表格的index一般是从0开始的,所以df.loc[len(df)]刚好是最后一行。对该行进行赋值即可。
    addrow = range(30)
    df.loc[len(df)] = addrow    
    
  • 如果增加的新的一行有特殊的名字,可以填入这个特殊的名字,这一行将填补到最后一行。
    addrow = range(30)
    df.loc['new'] = addrow  #取了一个好听的名字叫new:)
    print(df.tail(1))
    print(df.index)
    

4.2 增加列

和增加行是相似的,直接进行赋值即可。注意列名是不能为空的。

df[column_name] = column_value

4.3 增加空行、列

有时候需要增加空的行、列,之后再填补上内容,就可以这样操作

df.loc[index_new] = ''  #空的行
df['new'] = ''          #空的列

5. 查询特定特征

5.1 对某个特征(column)的情况进行查询

通常是对某个特定的特征进行查询,譬如查询身高180以上的,年龄20以下的,可以直接用表达式进行查询

# 身高180以上的
df_height_180plus = df[df[height] > 180]
# 年龄20以下的
df_20minus = df[df[age] < 20]

这里的df[age] < 20得到的是bool变量,只有作为“索引”再放入dfdf[df[age] < 20]才能获得表格值

如果想要对多个条件进行查询,那可以简单粗暴地

a = df[height] > 180    #身高
b = df[age] < 20        #年龄
df_new = df[a][b]       #两个条件一起

5.2 对某个样本(index)的情况进行查询

假设我们有全班人的成绩,columns是所有科目,index是同学的名字。我们 想要知道张三有哪些科目在80分以上,可以这样查看

subjects = df.loc['张三',:] > 80  #查询张三80分以上的科目(column)
print(df.loc['张三',subjects])    #df.loc[index,columns]查看

6.保存表格

方法如下

df.to_csv('filename.csv')       #csv文件
df.to_excel('filename.xlsx')    #excel文件

Pandas的基础操作就写到这里,下次过来写一些进阶的操作。希望本文对小伙伴们有帮助,欢迎友好讨论~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值