今天重写一下pandas,之前写过两篇关于pandas的文章一直觉得写的不够好。现在结合工作内容对pandas有了更深的理解。本文只讲解了我在工作中常用的函数,详细的用法可以看下方的往期文章。
Pandas的使用 pandas的增删查改安装
pip install pandas
因为pandas还依赖了其他的包需要自行下载,反正缺什么就pip什么就好了。
目录
1、pandas在工作中的使用
2、常用函数
1、pandas在工作中的使用
在工作中我用到最多的就是把非标准的数据从另一个容器中读取出来并用python进行处理,最后作为数据源存入Excel中,供其他Excel调用,如下图。
![322235e1c430f673987eb449af612ff6.jpeg](https://i-blog.csdnimg.cn/blog_migrate/a6555e1baf15a6f900493e7ffeb69149.jpeg)
一开始我学pandas学了一堆函数,结果是现在基本都忘了。我个人使用pandas最多的是读取、存储,至于对数据的操作全部都是用python的语法进行操作的,接下来还是介绍一下常用的函数吧。
2、常用函数
先创建一个excel文件
import pandas as pd
data = {'city': ['北京', '上海', '广州', '深圳'],
'2018': [33105, 36011, 22859, 24221]}
data = pd.DataFrame(data)
data.to_excel('excel练习.xlsx', index=False)
2.1、读取数据
df = pd.read_excel('excel练习.xlsx')
print(df)
print(type(df))
print(df.values)
print(type(df.values))
![1d40973294a548daed53e7a97f5daaf9.png](https://i-blog.csdnimg.cn/blog_migrate/be935b7b4c1416e57ce958a3f19807de.png)
DataFrame类型用python操作不太方便,所以使用values转为numpy数组的形式(这和列表很相似,可以像列表哪样操作)。
注意:
在读取数据时可以指定一列的数据类型,最近我遇到一个问题如下图,我将数据读出来再存入文本类型的001就变为了数字的1。
![1613aeaef0d6d4f21bf816a4bf318cc2.jpeg](https://i-blog.csdnimg.cn/blog_migrate/4c53ec5633464200c012b2b38a87b132.jpeg)
想要解决这个问题只需要在读数据时添加参数converters指定编号这列为字符型。
pd.read_excel(file_path, converters={'编号': str})
读取某一列的数据
df = pd.read_excel('excel练习.xlsx')
data = df['city']
print(data)
运行结果:
![93d669b6a5996a447aa9c2c1b764cfc5.png](https://i-blog.csdnimg.cn/blog_migrate/a579da3974d996ad3fc6d41e966b119c.png)
2.2、存储数据
data = {'city': ['北京', '上海', '广州', '深圳'],
'2018': [33105, 36011, 22859, 24221]}
data = pd.DataFrame(data)
data.to_excel('excel练习.xlsx', index=False)
存储数据很简单,只需要将数据处理成这样,再转为DataFrame类型才可存储。
2.3、删除数据
删除包含某值的行、删除指定行/列、去重、去0值、去空值
2.3.1、删除包含某值的行
data = df[df.city != '深圳']
![c817642949da099ff7d15ef6d22898af.png](https://i-blog.csdnimg.cn/blog_migrate/30e7ba2445963cbd5faf899863428207.png)
2.3.2、删除指定行drop()(删0、1行)
data = df.drop([0, 1], axis=0)
![3fa260271f2aecc310818be31abdd077.png](https://i-blog.csdnimg.cn/blog_migrate/fcfb810d0e7db03db181d3599a7652ab.png)
2.3.3、删除指定列drop()
data = df.drop(['2018'], axis=1)
![babdf8e6e5f8d1d933cdfdcb5e8f8811.png](https://i-blog.csdnimg.cn/blog_migrate/cd26580bb1c7c101b7dec68dfc8bb3c3.png)
2.3.4、去重drop_duplicates()
data.drop_duplicates(['city'])
data.drop_duplicates(['city', '2018'], keep='last')
对指定列(这个列可以包含多个元素如:['city', '2018'])去重,默认保留第一次出现的数据,但是添加参数keep='last'可以保留最后一次出现的数据。
2.3.5、去0值
data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', '四川', '未知', 0],
'2018': [33105, 36011, 22859, 24221, np.nan, 0, 0]}
data2 = pd.DataFrame(data2)
# 方法一
df = data2[(data2.T != 0).any()]
# 方法二
df2 = data2.loc[(data2 != 0).any(1)]
print(df)
print('==================')
print(df2)
![b277a4c6fff0750effff74e03ea09015.png](https://i-blog.csdnimg.cn/blog_migrate/bbf6d2f92543dd802de12e8be70d7cc6.png)
讲解:
any()方法会判断每行是否符合条件,如下:
data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', '四川', '未知', 0],
'2018': [33105, 36011, 22859, 24221, np.nan, 0, 0]}
data2 = pd.DataFrame(data2)
df = (data2.T != 0).any()
![1e16e89e69dfc4fb5306a93970675495.png](https://i-blog.csdnimg.cn/blog_migrate/2571c632ab4b70105b4b1da4b1d18bff.png)
指定列有0值就删除整行、参考2.3.1即可
2.3.6、去空值dropna()
data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', '四川'],
'2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
print(data2.dropna())
![a27d09069bb3715c5beeb384869f44d6.png](https://i-blog.csdnimg.cn/blog_migrate/44414e99cf6b6c823689ef92e0d8cdc9.png)
不加任何参数时只要某行包含了空值整行都会被删除。
添加axis时就可以删除包含空值的行/列
data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', '四川'],
'2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
print(data2.dropna(axis=1))
![efbcde48e5ddc4b56185a2a0ed8cd92d.png](https://i-blog.csdnimg.cn/blog_migrate/07d966639b3c30dac196811061733bcb.png)
2.4、追加数据
具体可以看看
coder-谢公子:Python | Pandas如何追加写入Excel