pandas用于excel

郝峰
2023-12-01

pandas

在数据分析方面功能强大,最近公司用到excel的调用。被迫营业,呜呜~~

基础知识

import pandas as pd

# header:列索引,index_col:行索引
# usecols:str-list:['名字','年龄']
pf = pd.read_excel("test.xlsx",sheet_name="学生",index_col=0,usecols="A:B")
pf1 = pd.read_excel("test.xlsx",sheet_name="Sheet3",usecols=['货号'])

# skiprows:跳过行,跳过两行skiprows=[6,8],行从0开始
pf2 = pd.read_excel("test.xlsx",sheet_name="Sheet3",skiprows=6)
pf3 = pd.read_excel("test.xlsx",sheet_name="Sheet1",skiprows=[0,2])

# names:设置表头
pf4 = pd.read_excel("test.xlsx",sheet_name="Sheet1",names=['货号', '商品名称', '品牌', '成本', '季节']) #,header=Noneb表不会占用第一行
ww = pf4.dtypes

pf5 = pd.read_excel("test.xlsx",sheet_name="Sheet3",dtype={
    '货号':'string',
    '成本':'float64'})
ww1 = pf5.dtypes
# na_values:缺失值,na_values=['张三',32]替换缺失值
pf6 = pd.read_excel("test.xlsx",na_values=['张三',32])

# converters:dict,默认None,值转换函数。
# lambda x:x.strip():去空格,也可以用'货号': str.strip
pf7 = pd.read_excel("test.xlsx",sheet_name="Sheet3",converters={'货号':lambda x: x.strip()})

往excel中写数据

DataFrame.to_excel(
self,
excel_writer, # 文件路径
sheet_name=‘Sheet1’,
index=True, # 是否输出Index
float_format = None, # 浮点数输出格式,如:“%.2f”
na_rep=’’, ) # 缺失值输出的表示形式

import pandas as pd

df = pd.DataFrame({
    '销量':[10,20],
    '售价':[100.123,None],
},index=['aaa','bbb'])
df.index.name = '佛号'
print(df)
# 修改时要关闭此excel
df.to_excel('tb.xlsx',
            sheet_name='tb1',
            float_format='%.2f',
            na_rep='空值'
            )

class pandas.ExcelWriter(
    path,                    # xls/xlsx  文件路径
    datatime_format = None)  # datatime输出格式,默认:‘YYYY-MM-DD HH:MM:SS’

pandas.ExcelWriter作用:
1、设置datatime输出格式
2、输出多个sheet

import pandas as pd
from datatime import datetime

df1 = pd.DataFrame(
    {
        '日期': [datetime(2022, 1, 22),datetime(2020, 1, 23)],
        '销量': [10, 25]
    }
)
df2 = pd.DataFrame(
    {
        '日期': [datetime(2022, 2, 22),datetime(2020, 2, 23)],
        '销量': [15, 25]
    }
)
print(df1)
print(df2)

with pd.ExcelWriter('tb1.xlsx',datetime_format='YYYY-MM-DD') as writer:
    df1.to_excel(writer, sheet_name='1月')
    df2.to_excel(writer, sheet_name='2月')

index 索引

作用:1、识别 2、对齐 3、获取和设置
注:使用索引应该避免索引有重复和用非默认的整数

import pandas as pd

s = pd.Series({
    'A': 1, 'B': 2, 'C': 3
})
s1 = s[[True, False, True]]
s2 = s[s > 1]

df = pd.DataFrame({
    'A': [1, 2, 4],
    'B': [2, 2, 4],
    'C': [1, 3, 4],
},index=['x','y','z'])
# 条件筛选
df1 = df[df['B'] > 3]
df2 = df[(df['B'] > 1) & (df['B'] < 4)]

print(df1)   # dtype:int64
print(df2)
print(s2)

list-like:切片
df[0:2]:包括头,不包括尾
df[‘X’,‘Y’]:包括XY这两行

df3 = df[0:2]
df4 = df['x':'y']

.点选:只做了解,不推荐使用

s = pd.Series({
    'A': 1, 'B': 2, 'C': 3
})
ss = s.A
df = pd.DataFrame({
    'A': [1, 2, 4],
    'B': [2, 2, 4],
    'C': [1, 3, 4],
},index=['x','y','z'])
df5 = df.A # df5 = ["A"]:选A这一列
print(df5)

df.loc()

df.loc[row_indexer, column_indexer]
1、df.loc[‘X’]:返回一行,只能取行,不能取列
2、df.loc[‘X’,‘B’]:返回X行,B列的一个值
3、df.loc[[‘X’,‘Y’],[‘B’,‘D’]:返回两行两列dataframe
4、df.loc[[True,False,True],[True,False,True,False]]
5、df.loc[‘X’:‘Y’,‘B’:‘D’]:返回从X-Y,B-D
6、df.loc[callable1, callable2]:可将以上五种方法混合使用

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3 ,4],
    'B': [2, 2, 5, 4],
    'C': [1, 3, 4, 7],
},index=['x','y','z','i'])

print(df)
print(df.loc['x'])
print(df.loc['x', 'B'])
print(df.loc[['x', 'y'],['A', 'B']])
print(df.loc['x':'z', 'A':'C'])
print(df.loc[:,'C':'A'])
print(df.loc[:,::-1])
print(df.loc[::2, ::2]) # 步长为2
 类似资料: