这篇教程Python入门之使用pandas分析excel数据写得很实用,希望能帮到您。
1.问题在python中,读写excel数据方法很多,比如xlrd、xlwt和openpyxl,实际上限制比较多,不是很方便。比如openpyxl也不支持csv格式。有没有更好的方法?
2.方案更好的方法可以使用pandas,虽然pandas不是专门处理excel数据,但处理excel数据确实很方便。 本文使用excel的数据来自网络,数据内容如下: 
2.1.安装使用pip进行安装。 导入pandas: 下文使用pd进行pandas的操作。
2.2.读写文件读取文件,比如excel,csv文件 # df是pandas.core.frame.DataFrame类型df = pd.read_excel('./data/2020-suv.xlsx')# read_csv可以指定分割符,编码方式等df2 = pd.read_csv('./data/2020-suv.csv') 写入文件: df.to_excel('./data/2020-suv-new.xlsx')df.to_csv('./data/2020-suv-new.csv')
2.3.数据操作all_cols = df.columnsprint(all_cols)# 输出,df.columns并非list类型Index(['销量排名', '车系', '官方价', '从属品牌', '1-12月销量'], dtype='object')# df.columns并非list类型,可以转化listcols = list(df.columns) 获取列数据 col_data = df[u'车系']mul_col_data = df[ [u'车系', u'1-12月销量'] ] 获取行数据 row_data = df.iloc[row_index] 获取所有行数据 切片获取多行数据 mul_row_data = df.iloc[2:4] 获取单元个数据 cell_data = df.iloc[row_index][col_index]
2.4.数据筛选Excel数据筛选比较实用,用pandas同样可以,并且筛选代码保存后,下次可以直接使用。 某个字段包含指定值 # 包含一个值,na表示是否需要填充,case表示是否区分大小写,更强大的是contains还支持正则表达式sub_df = df[ df[col_name].str.contains('key1', na=False, case=False) ]# 包含多个值,多次调用即可sub_df1 = df[ df[col_name].str.contains('key1', na=False, case=False) ]sub_df2 = sub_df1[ sub_df1[col_name].str.contains('key2', na=False, case=False) ]# 包含多个值(或)sub_df = df[ df[col_name].str.contains('key1|key2|key3', na=False, case=False) ]# 不包含,也就是非的过滤sub_df = df[ ~df[col_name].str.contains('key1', na=False, case=False) ] 上述操作,都假设字段类型是字符串类型,不然会抛异常。可以通过以下的方法,可以判断字段是否是字符类型: pd.api.types.is_string_dtype(df[u'车系'])# 其他类型也有类似的函数,可以用dir查看有哪些类型判断print(dir(pd.api.types))# 可以通过dtypes查看字段的类型pd.dtypespd[u'1-12月销量'].dtypes 条件过滤 # 大于df[ df['1-12月销量'] > 50000 ] .values# 相等df[ df['1-12月销量'] == 50000 ] .values
2.5.数据写入添加一行数据: # 插在最后,row_datas是listdf.loc[len(df.index)] = row_datas 插入一列数据 # 在指定列前面插上一列数据df.insert( col_index, col_name, col_datas, True) 更新某个单元值 df.iloc[row][col] = u'new-data'
2.6.数据删除删除一列 df2 = df.drop('官方价', axis=1, inplace=False)print(df2)# 输出销量排名 车系 从属品牌 1-12月销量0 1 哈弗H6 哈弗 3768641 2 本田CR-V 本田 2499832 3 博越 吉利汽车 2408113 4 途观L 大众 1785744 5 长安CS75 PLUS 长安汽车 266824.. ... ... ... ...282 283 北汽新能源EX 北汽新能源 879283 284 奔腾X40 奔腾 20412284 285 标致2008新能源 标致 37285 286 猎豹CS10 猎豹汽车 14286 287 森雅R7 一汽 1[287 rows x 4 columns] 删除一行 df3 = df.drop(2, axis=0, inplace=False)print(df3)# 输出 销量排名 车系 官方价 从属品牌 1-12月销量0 1 哈弗H6 9.80-15.49万 哈弗 3768641 2 本田CR-V 16.98-27.68万 本田 2499833 4 途观L 21.58-28.58万 大众 1785744 5 长安CS75 PLUS 10.69-15.49万 长安汽车 2668245 6 本田XR-V 12.79-17.59万 本田 168272.. ... ... ... ... ...282 283 北汽新能源EX 18.39-20.29万 北汽新能源 879283 284 奔腾X40 暂无报价 奔腾 20412284 285 标致2008新能源 16.60-18.80万 标致 37285 286 猎豹CS10 7.98-11.98万 猎豹汽车 14286 287 森雅R7 6.69-10.69万 一汽 1[286 rows x 5 columns]
3.讨论
pandas库用于大数据分析和AI,库本身比较复杂,很多功能未必用得上,日常使用可以简单的封装,能够读、写、搜索excel或csv数据,pandas比起专门操作excel的库要好用得多,简单封装一下即可。详细的使用说明,可以参见pandas官方文档。 https://pandas.pydata.org/docs/user_guide/index.html#user-guide
总结到此这篇关于Python入门学习之使用pandas分析excel数据的文章就介绍到这了,更多相关Python用pandas分析excel内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! 将Python代码打包成.exe可执行文件的完整步骤 pytorch查看网络参数显存占用量等操作 |