学习pandas笔记
数模期间用到了这个,就先记录一下用法之类的
# pandas 是导入的数据主要是一个dataframe格式的数据,处理数据的时候也是对他进行处理
# dataframe的索引由 index(行)和columns(列)组成,行与列都可以赋予一个名字(可为中文)
import pandas as pd
import numpy as np
pd.read_excel("Excel_File") # 导入excel文件
with pd.ExcelFile("Excel_File") as xls:
df1 = pd.read_excel(xls, "Sheet1") # 导入某一个excel文件的某一个表格
df1.to_excel('') # 导出excel
df2 = pd.DataFrame([]) # 创建一个新的空dataframe
df = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['utah', 'ohio', 'texas', 'oregon'])
# df的引用,赋值
df1.loc["index", "columns"] = "something" # index和columns厘米至少有一个为str格式
df1.iloc[1, 2] = "something" # iloc的索引必须为数字
df1["columns"] = "a_series" # df['columns']是一个series类型
df1['columns'].isin(['waste']) # 选取某一列里面值为‘waste’的那些行
# example: df1 = df1[~(df1['发票状态'].isin(['作废发票']))]
# 去除df里面,发票状态一列为作废发票的几行 ~ 表示取反
# apply 函数:一个自由度比较高的函数
# DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
# apply会提取出一列数据出来(axis=0)作为一个series,对这个series进行func函数操作,然后返回一个series
df['values'] = df.apply(lambda x: x.max()-x.min()) # 提取所有列中的最大值和最小值并相减
df1["开票月份"] = df1["开票日期"].apply(lambda x: x.strftime('%Y-%m'))
# 对于逻辑简单的,也可以直接使用 df1["开票月份"] = df1["开票日期"].strftime('%Y-%m')
# groupby 函数:可以参考这篇文章:https://www.cnblogs.com/Yanjy-OnlyOne/p/11217802.html
# 这是一个分类函数,依据输入的参数进行分类.在将表格合并出现各种问题的时候,可以试下使用这个,可以参考国赛的 数据处理_数据融合.py 文件
# 关于行列索引
# 1.初始化的时候可以设置
df.reset_index() # 2.将现有的列索引取消,并作为普通的一列
df.set_index() # 3.将某一列设为列索引
df.index # 获取列索引
df2 = df2.sort_values(by='月份') # # 排序 按月份这一列进行排序
df['columns'].tolist() # 转为list
list(set(df['columns']))