在数据分析方面功能强大,最近公司用到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()})
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月')
作用: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[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