潘大师(pandas)基操

前言

潘大师(pandas)广泛应用于数据分析、机器学习和深度学习的数据预处理等领域,掌握一些基础的pandas操作是必要的。本文介绍了一些pandas的基础操作,这些操作基本能够满足机器学习和深度学习的基本数据处理要求。如果需要进一步学习,建议自行查阅专著。

安装pandas

cmd窗口运行以下代码:

pip install pandas

潘大师基操

导入库

import pandas as pd

读取文件

读取csv文件:

df1 = pd.read_csv('xxx.csv',encoding="gb18030")  # xxx为表格名称

注意,为了防止文件的中文乱码,最好加上encoding="gb18030"这段代码。

读取excel表格:

df2 = pd.read_excel('XXX.xls')    # xxx为表格名称

df1 = pd.read_excel('xxx.xlsx',sheet_name =  'sheet1') # 读取xxx文件中名字为sheet1的工作表数据

查看数据信息

df1.head(num) # num填写想要查看的行数,填写6,表示查看表格前6行(不含列表头),num默认5

df1.tail(num) # num填写想要查看的行数,填写6,表示查看表格后6行(不含列表头),num默认5

df2.info() # 查看行列数、数据类型、是否有空集等等

统计结果

df1.describe()  # 可以查看数值属性列的平均数mean,标准std,最小值min,最大值max等

修改一列

df2["column"]= range(1, len(df1)+1) # 修改一列的数据,如果column列不存在,则新建一列

纵向合并各个表格或sheet

df = pd.concat([d1,d]) # 纵向合并,直接在行下面加行

merge合并

pd.merge(left = df1,right = df2,left_index = '某个索引',right_index ='某个索引 ' ,how = ' 合并方式') 
# left,right指定左右表

# left_index,right_index指定该表的某个索引作为链接条件
合并方式how有以下几种:

# inner表示只返回两个表索引的交集

# right 按照右表的索引返回,没有就返回空,left同理

# outer 返回两个表索引的并集,没有的为空

删除行或列

df2 = df2.drop('column', axis=1)  # 删除column列

df2 = df2.drop('row', axis=0)  # 删除指定的row行

df.dropna() # 删除带有空数据的行,只要该行有一个数据为空就删除

df.dropna(subset = ['column']) # 指定删除某列元素中为空值的行

df.drop_duplicates() # 删除重复的行,这里的重复是该行所有元素均一样

df.drop_duplicates(subset = 'column',keep = num) # 各行只要是column列相同就认为是相同行,keep表示指定保留第num行,不写默认保留所有相同行中最开始的一行

选取某一列或列

df1[['column1','column2']] # 选取列标签为column1与column2的列

df2.loc[0:0, : ] # 选取第0行

按列修改内容

df1['column'] = df1['column].str.replace('**', '*') # 将列标签中为column的列所有的**改为*

df1[column'] = df1['column'].str.replace('%', '').astype(float)/100 # 将某一列的百分数转化为小数

列计算

df1['column'] = df1['column1']*df1['column2'] # 将column1的数据与column2的数据对应相乘,结果保存到column中(本身就存在column则修改,否则再最右边新建)

索引数据

df.iloc[row1:row2,column1:column2] # 显示第row1到row2行的column1到column2列

df.iloc[row1:row2,[column1,column2]] # 显示第row1到row2行的column1列与column2列

df.loc[行条件; 列条件] # 这个是基于条件的索引,行条件一般是一个判定某一列中每行的一个条件语句,结果会返回与df的行数相同的bool值,列条件是列标签等
# 常见的判定有:
# df.loc[df['column'] == 特征,:] # 找出column列中满足该特征的所有行,并显示完整行对应的完整列
# df.loc[df['column'].isin(['特征]),['column','column1']] # 找出column中包含特征的所有行,并显示该行的column与column1列

数据排序

sort_df = df.sort_values('column', ascending=False) 
# 按照column列的数值大小进行排序, ascending为False从大到小,为True表示从小到大

数据分组

df.groupby('column','as_index')[['column1', 'column2']].方法 
# 按照column分类,对column1与column2列的元素使用某种统计方法
# 不指定则会默认对所有数字列处理
# as_index可以避免column列的元素成为行索引

数据切分

cut(x, bins,right,labels)
'''
x:要传入和切分的一维数组,可以是列表,也可以是DataFrame的一列

bins表示切分的方式,可以自定义传入列表[a,b,c],表示按照a-b,b-c的区间来进行切分也可以输入数值(例如s),直接指定分成5组

right的值可以设置为True或者False,当为True时,表示分组区间是包含右边,不包含左边;等于False代表区间含左不含右

labels则是打标参数,把某列数据切分成3组,每一组可以给它设置一个对应的标签。
'''

Apply()方法

df.groupby(['列名’])['column'].apply(func)  # func接收一个函数,把分组后的数据根据函数进行处理

# 先使用groupby()方法将df的数据按照相同的列名进行分组,对于每一组数据的column列,执行func函数

文件批处理

import os
os.chdir('C:/Users/...') # 注意是反斜杠,转移工作路径到此路径下,类似于将执行文件放置于上述路径
for ii in os.listdir(): # 批处理此文件夹下的所有数据,执行os.chdir('C:/Users/...')后,()内可以为空,否则需要写上路径
    pass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syphomn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值