您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python入门之使用pandas分析excel数据

51自学网 2021-10-30 22:40:56
  python
这篇教程Python入门之使用pandas分析excel数据写得很实用,希望能帮到您。

1.问题

在python中,读写excel数据方法很多,比如xlrd、xlwt和openpyxl,实际上限制比较多,不是很方便。比如openpyxl也不支持csv格式。有没有更好的方法?

2.方案

更好的方法可以使用pandas,虽然pandas不是专门处理excel数据,但处理excel数据确实很方便。

本文使用excel的数据来自网络,数据内容如下:

2.1.安装

使用pip进行安装。

pip3 install pandas

导入pandas:

import pandas as pd

下文使用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]

获取所有行数据

all_data = df.values

切片获取多行数据

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查看网络参数显存占用量等操作
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。