Pandas玩转Excel

本文详细介绍了如何使用Pandas库进行Excel文件的创建、读取、设置行列索引,以及数据处理如数据填充、类型转换、排序筛选、合并等操作。重点包括DataFrame与Series的创建、行列旋转、数据填充、数据类型转换、多表联合和数据透视表的使用。
摘要由CSDN通过智能技术生成

创建Excel文件/输出到Excel

创建

#创建空的excel
import pandas as pd
df=pd.DataFrame()#需要先创建一个空的DataFrame数组,然后通过空的DataFrame转化为空的Excel
df.to_excel(“C:\Users\新建文件夹\test1.xlsx”)#将空的DataFrame转化为空的Excel,保存到相应路径

**创建DataFrame数据并写入Excel文件**

df=pd.DataFrame({
   'ID':[1,2,3],'name':['Tim','Nick','Victor']})#通过字典的形式创建DataFrame
df.to_excel(“C:\Users\新建文件夹\test1.xlsx”)#将DataFrame写入到Excel,保存到相应路径

# 设置行索引set_index
df=df.set_index('ID') #ID为想要设置的行标签,并通过df=df.set_index(),在原数据上进行替换,将ID列作为行标签

输出

df.to_excel(“C:/Temp/People.xlsx”)

读取文件/设置行、列索引

读取文件

  • 读取文件时请注意:如果需要设置第1行为列索引,则headers=1(一般用于第1行数据为杂乱无用数据,若为空,则可以自动识别第2行为索引),header默认为0,即将第0行作为索引列。若读取的数据中只有数据,没有有列索引,则需要添加header=None来表示,同时可以通过df.columns=[“name”,“old”,“sexuality”]来为数据新增列索引
  • index_col表示在导入数据的时候就指定行索引
  • siprows=3表示跳过前3行,从第4行开始读取,一般用于跳过空行或者无用行,无sipcolums,而是用usecols;usecols="C:F"表示使用C:F列数据,一般用于数据前几行前几列为空白
  • dtype为设置某列的数据类型,也可以通过df[‘ID’]=df[‘ID’].astype(int)设置
  • sheet_name表示读取excel中的某个sheet页
#读取已有文件
df=pd.read_excel('C:/Temp/People.xlsx',header=1,index_col=“ID”,skiprows=3,usecols=“C:F”,dtype={
   'old'str,'name'str},sheet_name=‘sheet2’)

#获得文件的行和列
print(df.shape)
#获得数据的列名(不包含行索引index)
print(df.columns)
#显示数据前/后几行
print(df.head(10))  #显示数据的前10行,默认不填people.head(10)显示前5行
print(df.tail()) #显示数据的后10行,默认不填people.head(10)显示后5行

读取csv,tsv,txt文件
df=pd.read_csv(‘C:/Temp/People.csv’)
df=pd.read_csv(‘C:/Temp/People.tsv’,sep=’\t’)
df=pd.read_csv(‘C:/Temp/People.txt’,sep=’|’)

  • sep表示原表中数据的分隔符,比如tsv文件以制表符(\t)分隔,无论读取csv,tsv,txt,都是通过pd.read_csv()

设置行、列索引

#设置列索引,只有当读取数据是headers=None时才能使用
df.columns=[“name”,“old”,“sexuality”]来为数据新增列索引
#设置行索引
# 设置行索引set_index---方法1
df=df.set_index('ID') #ID为想要设置的行标签,并通过df=df.set_index(),在原数据上进行替换,将ID列作为行标签

# 设置行索引set_index---方法2
df.set_index('ID',inplace=True)

行、列、单元格(Series)

创建Series

#方法1--通过字典创建Series
d={
   'x':100,'y':200,'z':300}
s1=pd.Series(d)      

#方法2--分别通过值和键来创建Series
L1=[100,200,300]
L2=['x','y','z']
s1=pd.Series(L1,index=L2,name='A')   #name表示标签名

s1=pd
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值