一直使用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变量,只有作为“索引”再放入df
中df[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的基础操作就写到这里,下次过来写一些进阶的操作。希望本文对小伙伴们有帮助,欢迎友好讨论~~