千家信息网

Python中怎么使用pandas分析excel数据

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,本篇内容主要讲解"Python中怎么使用pandas分析excel数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python中怎么使用pandas分析
千家信息网最后更新 2024年11月21日Python中怎么使用pandas分析excel数据

本篇内容主要讲解"Python中怎么使用pandas分析excel数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python中怎么使用pandas分析excel数据"吧!

1.安装

使用pip进行安装。

pip3 install pandas

导入pandas:

import pandas as pd

下文使用pd进行pandas的操作。

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')

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]

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

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'

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]

到此,相信大家对"Python中怎么使用pandas分析excel数据"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0