Python之pandas表格处理常用方法

目录

0.导入导出操作

0.1导入excel/csv表格

0.2导出excel/csv表格

1.表格索引

1.1获得表格索引和列名

1.2更改非索引列的列名

1.3更改索引列的名称

2.创建表格

3.删除指定的列/行/缺失值

3.1删除指定的列

3.2删除指定的行

3.3删除缺失值,不改变行索引

3.4删除缺失值,改变行索引 

4.填充缺失值

5.数据替换 

6.两个表格融合

7.表格合并

8.表格透视

9.转置

10.遍历整个表格

11.获取表格统计信息

12.按指定列的值进行排序

13.重采样resample() 

14.对重复数据进行合并求和

15.中心对数比变换(表格版)


0.导入导出操作

下面以excel为例,csv同理,

只要把read_excel改成read_csv,把to_excel改成to_csv即可。

0.1导入excel/csv表格

data=pd.read_excel("附件.xlsx",sheet_name="表单2",index_col=0)

 pd.read_excel(io,sheet_name,index_col)

常用参数解读:

  • io:文件地址
  • sheet_name:表单名称,不填则默认导入第一个表单
  • index_col=0:系统不自动产生新的索引,即利用原来表格的第一列作为索引
                        不填,则自动添加索引(0,1,2,3……)

0.2导出excel/csv表格

data.to_excel("附件1.xlsx",index=True)

 df.to_excel(io,,sheet_name,index)

常用参数解读:

  • df:表格
  • io:文件地址
  • sheet_name:表单名称,不填则默认导出至第一个表单
  • index:True(默认),利用df的索引作为生成excel表格的索引
                False,不利用df的索引作为生成excel表格的索引,即无索引

1.表格索引

1.1获得表格索引和列名

print("表格的列名:",data.columns)
print("表格的索引名:",data.index)

1.2更改非索引列的列名

data.columns=['A','B','C','D','E','F','G','H','I','J','K','L','M','N']

df.columns=[ ] 

在方括号内填新的列名

1.3更改索引列的名称

data.index.rename("变量名",inplace=True)

 df.index.rename("索引列的新名称",inplace=True)

2.创建表格

df=pd.DataFrame(np.random.randn(24,4),index=list(range(0,24)),columns=list('ABCD'))

 df=pd.DataFrame(data,index,columns)

常用参数解读:

  •  df:所创建的表格名称
  • data:数据。无,则生成空表格
  • index:索引名
  • columns:列名

3.删除指定的列/行/缺失值

3.1删除指定的列

data.drop(["A"],axis=1,inplace=True)  # 删除列,inplace=True不生成新表格

3.2删除指定的行

data.drop(["15"],axis=0,inplace=True)

3.3删除缺失值,不改变行索引

data.dropna(inplace=True) # 删除缺失值,但不会自动改变行索引

 df.dropna(inplace=True)

常用参数解读:

  • inplace=True:不生成新表格

3.4删除缺失值,改变行索引 

data.dropna(inplace=True)   # 删除缺失值
data.dropna().reset_index(drop=True)  # 改变行索引

4.填充缺失值

data.fillna(0,inplace=True)  # 把缺失值填充为0

df.fillna(value,inplace=True)

常用参数解读:

  • value:把缺失值填充为value
  • inplace=True:不生成新表格

5.数据替换 

data.replace(0,0.04,inplace=True) # 把原来表格中的0替换成0.04

data.replace(被替换的数据,替换成的数据,inplace=True)

6.两个表格融合

data_1 = pd.read_excel('附件1.xlsx')
data_2 = pd.read_excel('附件2.xlsx')

result = pd.merge(data_2, data_1, on=['单品编码'], how='left') # on的列 用于标识每行数据;how='left':左连接

# 查看结果
print(result)

 df3=pd.merge(left, right, on, how)

常用参数解读:

7.表格合并

data1= pd.concat([data.sum(),data.mean(),data_date.max()], axis=1)
print(data1)

8.表格透视


data_date_item=data1.pivot_table(index="销售日期",   # 行索引名
                                columns="单品名称",  # 列名
                                values="销量(千克)", # 表格中的内容
                                 aggfunc="sum")     # 聚合方式

df2=df1.pivot_table(index,columns , values, aggfunc)

常用参数解读:

9.转置

data=data.T

10.遍历整个表格

for idx in data.index:
    for col in data.columns:
        # 以上两行就可以遍历整个表格
        if data.loc[idx,col]==0:
            data.loc[idx, col] =0.04  # 把0替换为0.04

关键句

for idx in data.index:

        for col in data.columns:

11.获取表格统计信息

data=pd.read_excel("附件.xlsx",index_col=0)# "index_col=0" 若加上这句,系统不会自动加上新的行索引,而是使用原有的第一列作为行索引

# python自带的统计描述
print("python自带的统计描述",data.describe())

# 一般更多需要"平均值","标准差","最小值","最大值","偏度","峰度",下面求这6个值并制作成表格
arr=np.array(data.describe().iloc[[1,2,3,-1],:])
arr=np.vstack([arr,data.skew()])
arr=np.vstack([arr,data.kurt()])
data_describe=pd.DataFrame(arr,index=["平均值","标准差","最小值","最大值","偏度","峰度"],columns=data_date_class.kurt().index)
print("统计描述:\n",data_describe)

12.按指定列的值进行排序

# 按指定列的值排序
data.sort_values(by="B",inplace=True)

13.重采样resample() 

data2=data1.resample('3M').sum()

要求:索引必须是时间 

常用参数解读:

  • '3M'表示按每3个月进行采样,还可以换成:'M'表示按每1个月进行采样,'D'表示按每1天进行采样
  • sum()是填充方法,即求和后填充,还可以换成:last()即最后一个数据作为填充,,ffill(),bfill()等

详见:python中Pandas的简单实例应用/resample函数/pivot_table函数/时间序列/使用数据透视和重采样从股指成分股进出记录得到月频的股指成分股数据_resample函数python-CSDN博客

14.对重复数据进行合并求和

import pandas as pd
import numpy as np

# 创建一个表格作为示例
values=np.array([1,2,3,4,5])
data=pd.DataFrame(values,index=["红","橙","黄","红","黄"],columns=["出现次数"])
data.index.rename("颜色",inplace=True)
print(data)

# 对“颜色”的“出现次数”进行求和
data_sum_by_color=data.groupby("颜色")["出现次数"].sum()
print(data_sum_by_color)

 df_sum=df.groupby( )[  ].sum()

常用参数解读:

15.中心对数比变换(表格版)

中心对数比变换是专门针对成分数据的一种数据处理方法

这个函数能直接对表格进行操作,且返回值也是一个列表

def centered_log_ratio(data):
    data_clr=pd.DataFrame(index=data.index,columns=data.columns)  # 创建一个空表格
    D=data.shape[1]  # 成分的个数
    data_ln=np.log(data)
    for i in range(D):
        data_clr.iloc[:,i]=data_ln.iloc[:,i]-np.mean(data_ln,axis=1)
    return data_clr

注意: 为了避免中心化后出现inf或nan, 一定要将0替换成正值 ,并将nan填充成正值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值