欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python-pandas库实现sql常用操作

程序员文章站 2022-03-03 19:52:37
...

python数据分析与SQL的区别

SQL数据只能应用与数据库。

pandas可以实现sql实现的所有功能。pandas也是操作结构化数据

两者都是对“表格型”数据进行操作和查询,所以很多语法都能对应起来。

对比判断:

1.select数据查询

2.where按条件查询

3.in和not in的条件查询

4.group by分组统计

5.JOIN数据关联

6.Union数据合并

7.Order Limit:先排序后分页

8.取每个分组的group的top n

9.update数据更新

10.delete删除数据

下面开始数据演练

1.py数据演示

import pandas as pd
import numpy as np

df=pd.read_csv("") #默认输入csv文件路径
df.head() #读取前5行数据(输入数字就取对应开始的行数)

# 1.select操作:select 列名 from 表A limit 5
df[["","",""]].head(5)

# 2.where条件:select 列名 from 表名 where 条件=''
# 使用括号的方式进行 连接多个条件
condition=(df["列名"]=="")&(df["列名"]=="")&(df["列名"]=="")
condition.value_count()
df[condition].head(5)

# 3.in和not in:select * from 表A where 列名 in('1','2')
df["列名"].unique()   # 去重
# in
df[df["列名"].isin((1,2))].head()
# not in:df取反符号为~
df[~df["列名"].isin((1,2))].head()

# 4.1group by:select sum(),maen() from person group by sex
df.groupby("sex").agg({列名:np.sum,"列名":np.mean,"列名":np.mean})

# 4.2.多个列的聚合:select sum(),mean() from person group by sex,department
df.groupby(["sex","department"]).agg({列名:np.sum,"列名":np.mean,"列名":np.mean})

# 5.join数据关联:select * from table1 a1 join table2 a2 on a1.列名=a2.列名 limit 5
df2=pd.read_csv()
df2.head(5)  # 查看前5行数据
df_merged=pd.merge(left=df1,right=df2,on="列名")
df_merged.head(5)

# 6.Union数据合并,当两个表的数据列一致时使用union。
# SQL:selet city,rank from 表1 union all select city,,rank from 表2
# 同样的df也需要有相同的列名,假设df1和df2的列名是一致的
pd.concat([df1,df2])

# 7.order limnit先排序后分页
# sql:select * from 表1 order by 列名 limit 5
df.sort_values("列名",ascending=False).head(5)

# 8.取每个分组group的top n:mysql不支持,oracle使用rownum
# 根据列名1,列名2分组,取列名3的top2
df.groupby(["列名1","列名2"]).apply(lambda df:df.sort_values("列名3",ascending=False).head(2))

# 9.update数据更新:update 表1 set 列名1=value where 条件
df.info() #查看df的信息
condition=df["列名"].isna()
condition.values_counts()
df[condition]=value
df["列名"].isna().values_counts()

# 10.delete删除数据:delete from 表1 where 列名=0
# df取反条件的值付给新的df
df_new=df[df["列名"]!=0]
df_new[df_new["列名"]=0] #可以得到0条数据
相关标签: 数据