python处理excel表常用知识

python处理表格的常用知识

1. 读取或者连接excel

借助pandas模块(需要先安装pandas模块)

import pandas as pd
data=pd.read_excel('C:\\Users\\C++成绩.xls',sheet_name=0,header=1)
print(data)    #将表格全部显示出来

sheet_name=0的意思就是 该excel中所有sheet都可以提取如果你想提取某sheet_name=1 就是提取该excel中第一个sheet
heard 属性是从0开始,o代表一行 hear=1就是重第二行开始的(我的excel表中有头文件所有去除了首行)

2.几个常用的操作:

上面我们将excel给了data 所以下面是data.xx

data.shape   #打印显示表格的属性
data.columns   # 打印表格所有列的名字
data.count()  #查看每列统计的数据
data.sample(5)   #随机打印数据集5行
data.tail()  #默认显示后五行
data.head()  #默认显示前五行
data.info()  #查看缺失值(空值的情况)
data.columns=[‘ 列名1,’列名2]    #设置表头
data.set_index(‘ID’,inplace=True)  #用自己设置的索引而不是系统自动生成的
hear=none     #不设置表头
data.to_excel(‘D://practice//c++成绩excel.xlsx’)  #保存处理好的表格
data['性别'].value_counts()  #统计性别
data.sort_values(by='年龄')#根据年龄升序

3.去除修改表格中残缺无用值(数据清洗)

1.duplicated()查看重复值并删除
查看重复的行
duplicated().value_counts()
删除重复的值
语法格式:

drop_duplicates(subset=["A","B"],keep='first',inplace=True)

subset:以哪几列作为基准列,判断是否重复,如果不写则默认所有列都要重复才算
keep: 保留哪一个,fist-保留首次出现的,last-保留最后出现的,False-重复的一个都不保留,默认为first
inplace: 是否进行替换,最好选择False,保留原始数据,默认也是False
2.缺失值处理
查看缺失值位置

data.isnull()

返回true 代表有空值 flase 无空值
直接看每一列是否有空

isnull().any()

定位含空值的行或者列

data.isnull().values==True

3.dropna函数 清洗数据
单纯的删除缺失值

drop()

语法格式:

data.drop(labels=None,axis=0, how='any',index=None, columns=None, inplace=False)

labels :是要删除的⾏列的名字,⽤列表给定。
axis :axis=1表示列,axis=0表示⾏,若是参数中不写,则是默认为axis=0,
how:‘any’则是指只要列中含有一个空值,就删除该列;'all’则是代表只有一整列为空值,才删除该列
index:直接指定要删除的⾏。
columns:直接指定要删除的列。
inplace=False:默认该删除操作不改变原数据,⽽是返回⼀个执⾏删除操作 后的新 dataframe。
inplace=True:则会直接在原数据上进⾏删除操作,删除后⽆法返回。

删除列的方法:
方法1.`drop(labels='列名',axis=1)`
方法2.`drop(columns='列名')` 
删除行的方法:
```python
drop(index='行的索引')

删除重复行

drop_duplicates()

删除含有空值的行

drop(axis=0,how='any')

删除含有空值的列

drop(axis=0,how='any'

删除含有NaN的行或者列

drop(axis=0, how='any', thresh=None, subset=None)

thresh:阈值;删除的行/列至少有n个NaN值。n是int类型
subset:列表;columns或者index,只删除指定列/行

4.fillna()填充数据
语法格式:
`data.fillna(value=None, method=None, axis=None, inplace=False, limit=None)`
value 填充的值
method=‘ffill’表示用前面行/列的值,填充当前行/列的空值;bfill,则相反
limit =n  可以补n个值
补缺失值填充0:
```python
fillna(0)

对某列空值进行填充

fillna({"A列": "填充", "B列": "填充"})

5.替换值
B值将A值替换,没有设置就是全局替换 可以设置替换某行某列的某个

replace({A:B})

对某列进行的函数计算替换

hr_data[‘col1‘].map(function)#function指的是调用的函数功能模块

4.表的合并

1.merge函数
语法格式:

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)

left: 拼接的左侧对象
right: 拼接的右侧对象
on: 要加入的列或索引级别名称。 必须在左侧和右侧对象中找到。
如果未传递且left_index和right_index为False,则DataFram中的列的交集将被推断为连接键。
left_on:左侧DateaFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
right_index: 与left_index功能相似。
how: One of ‘left’, ‘right’, ‘outer’, ‘inner’. 默认inner。inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。'outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。
sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。
suffixes: 用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。
copy: 始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。
indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。
基本运用

merge(1,2,how='inner',on="ID")

内连接,默认how=‘inner’ 全连接:outer
on=‘ID’ 根据ID来连接

5.数据的基本分析

获取最大最小平均值等
data[‘列名’].max()
min()
mean()
根据条件获取某行全部数据:

方法一:
 a= c1.groupby(by='班级', as_index=False).max()
 print(a)
 方法二:
 a= c1.max()
 print(a)
 方法三:
  lie=c1.columns
  for dat in lie:
 		#获取每一列的数据
 		d = c1[dat]
 		print('max={}'.format(d.max())) #获取最大和最小值
 	

根据条件查找或者分段
data[(data.列1=0)&(data.列2=8)]
&交 | 并

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值