② 访问一列或多列
“访问一列或多列”,相对来说比较容易,直接采用中括号“标签数组”的方式,就可以获取到一列或多列。
方法1:访问一列
df["武汉"]
方法2:访问多列
df[["武汉","广水"]]
③ 访问一行或多行
“访问一行或多行”,方法就比较多了,因此特别容易出错,因此需要特别注意。
方法1:访问一行
# 位置索引 df.iloc[0] # 标签索引 df.loc["地区1"]
方法2:访问多行
# 位置索引 df.iloc[[0,1,3]] # 标签索引 df.loc[["地区1","地区2","地区4"]]
④ 访问单元格中某个值
“访问单元格中某个值”,也有很多种方式,既可以使用“位置索引”,也可以使用“标签索引”。
# 使用位置索引 df.iloc[2,1] # 使用标签索引 df.loc["地区3","天门"]
⑤ 访问多行多列
“访问多行多列”,方法就更多了。我一共为大家总结了5种方法。第一,iloc+切片;第二种,loc+标签数组;第三种,iloc+切片+位置数组;第四种,loc+切片+标签数组。
方法1:iloc+切片
# 选取前3行数据的所有列 df.iloc[:3,:]
方法2:loc+标签数组
# 选取地区1和地区3这两行的武汉、孝感、广水列 df.loc[["地区1","地区3"],['武汉','孝感','广水']]
方法3:iloc+切片+位置数组
# 选取所有行的第2和第5列数据 df.iloc[:,[1,4]]
方法4:loc+切片+标签数组
# 选取地区1和地区2这两行的武汉和广水列 df.loc[:"地区2":,["武汉","广水"]]
4. Excel数据的拼接
在进行多张表合并的时候,我们需要将多张表的数据,进行纵向(上下)拼接。在pandas中,直接使用pd.concat()函数,就可以完成表的纵向合并。
关于pd.concat()函数,用法其实很简单,里面有一个参数ignore_index需要我们注意,ignore_index=True,表示会忽略原始索引,生成一组新的索引。
如果不使用ignore_index参数
df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1") df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2") pd.concat([df1,df2],ignore_index=True)
结果如下:
从上表可以看到,里面有两条记录是完全重复的,我们直接可以再调用drop_duplicates()函数,实现去重操作。
df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1") df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2") pd.concat([df1,df2],ignore_index=True).drop_duplicates()
结果如下:
5. Excel数据写出
当我们将某个Excel文件中的表,进行读取、数据整理等一系列操作后,就需要将处理好的数据,导出到本地。其实Pandas库中可以导出的数据格式有很多种,我们同样以导出xlsx文件为例,进行讲述。
在Pandas库中,将数据导出为xlsx格式,使用的是DataFrame对象的to_excle()方法,其中这里面有4个常用的参数,详情如下。
excel_writer:表示数据写到哪里去,可以是一个路径,也可以是一个ExcelWriter对象。
sheet_name:设置导出到本地的Excel文件的Sheet名称。
index:新导出到本地的文件,默认是有一个从0开始的索引列,设置index=False可以去掉这个索引列。
columns:选则指定列导出,默认情况是导出所有列。
encoding:有时候导出的文件会出现乱码的格式,这个时候就需要使用该参数设置文件编码格式。
df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1") df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2") df3 = pd.concat([df1,df2],ignore_index=True) df3.to_excel(excel_writer="to_excel.xlsx",sheet_name="to_excel",index=None)
6. ExcelWriter的使用
有时候我们需要将多excel表写入同一个工作簿,这个时候就需要借助Pandas中的pd.ExcelWriter()对象,默认对于xls使用xlwt引擎,对于xlsx使用openpyxl引擎。
这里面有两个参数,一个是路径参数Path,表示生成文件的存放路径,一个是时间格式化参数datetime_format,可以将生成文件中的时间列,按照指定时间格式化输出。
df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1") df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2") with pd.ExcelWriter("excel_writer.xlsx",datetime_format="YYYY-MM-DD") as writer: df1.to_excel(excel_writer=writer,sheet_name="df1",index=None) df2.to_excel(excel_writer=writer,sheet_name="df2",index=None)
上面第三行代码,我们打开了一个ExcelWriter对象的同时,将所有设计到时间列的数据,进行格式化输出为年-月-日。
接着第四行代码,我们将df1中的数据写到这个ExcelWriter对象中,将这个Sheet取名为df1。
最后第五行代码,再将df2中的数据写入到这个ExcelWriter对象中,同样将Sheet取名为df1。