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)
常用参数解读:
- left:左表
- right:右表
- on:用来对齐的列名。要保证左表和右表用来对齐的那一列,都有相同的列名。
- how:融合的方法。
可选:
‘left’按照左表的索引顺序,
‘right’按照右表的索引顺序,
‘outer’外连接,取并集
‘inner’内连接,取交集(默认)
‘cross’- 详见:Python 玩转数据 17 - Pandas 数据处理 合并 pd.merge() df1.merge(df2)_df.merge-CSDN博客
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)
常用参数解读:
- index:行索引名
- columns:列名
- values:表格中的数据内容
- aggfunc:聚合方式,一般选"sum",也就是df1中将相同行索引名、相同列名的数据求和,再放进df2
- 详见:python中Pandas的简单实例应用/resample函数/pivot_table函数/时间序列/使用数据透视和重采样从股指成分股进出记录得到月频的股指成分股数据_resample函数python-CSDN博客
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()
标签:index,表格,Python,True,inplace,索引,data,pandas From: https://blog.csdn.net/Yhw20040823/article/details/141924470要求:索引必须是时间
常用参数解读:
- '3M'表示按每3个月进行采样,还可以换成:'M'表示按每1个月进行采样,'D'表示按每1天进行采样
- sum()是填充方法,即求和后填充,还可以换成:last()即最后一个数据作为填充,,ffill(),bfill()等