使用pandas實現sql功能(粗略)

2021-09-26 08:58:13 字數 1566 閱讀 3774

使用python的pandas,實現sql的功能。

python版本:python 3.7.4

pandas版本:pandas 0.25.0

首先使用pandas的dataframe方法,建立乙個df,也就是表。

df = pd.dataframe()
使用這種格式進行編碼,更加直觀。

#實現select

# 輸出1-4位的資料的total_bill和tip

print(df.loc[1:5, ['total_bill', 'tip']])

# 1-2位資料,列為1和2列

print(df.iloc[1:3, [1, 2]])

# 實現where

# select * from df where *** = female

print(df[df['***']=='female'])

print(df[df['total_bill'] > 20])

# and

df[(df['***'] == 'female') & (df['total_bill'] > 20)]

# or

df[(df['***'] == 'female') | (df['total_bill'] > 20)]

# in

df[df['total_bill'].isin([21.01, 23.68, 24.59])]

# not

df[-(df['***'] == 'male')]

df[-df['total_bill'].isin([21.01, 23.68, 24.59])]

# 對where條件篩選後只有一行的dataframe取其中某一列的值,其兩種實現方式如下:

total = df.loc[df['tip']==1.66,'name'].values[0]

print(total)

# distinct

# drop_duplicates根據某列對dataframe進行去重:

df.drop_duplicates(subset=['***'], keep='first', inplace=true)

# subset為列做distinct,預設為所有列

# keep,值選項,保留重複元素中的第乙個、最後乙個,或全部刪除;

# inplace ,預設為false,返回乙個新的dataframe;若為true,則返回去重後的原dataframe

# join

df = pd.merge(df1, df2, how='left', left_on='tip', right_on='tip')

#group by

print(df.groupby('***').agg())

#as 修改列名

# df.rename(columns=,inplace=true)

參考文章:

原創 pandas 實現vlookup功能

code language python import numpy as np import pandas as pd 引入相應的模組 pd.set option display.float format lambda x 5f x 禁止使用科學記數法 df pd.dataframe pd.read...

在pandas中使用sql

from pandasql import sqldf 查詢記憶體中的pandas資料框 pysqldf lambda q sqldf q,globals 匯入模組,自帶資料,尋找pandas資料框 from pandasql import sqldf,load meat,load births py...

Pandas 統計功能

dataframe 描述性統計和匯 計count 非na值的個數 describe 計算series和dataframe各列的匯 計集合 min max 計算最小值 最大值 argmin argmax 計算最小值與最大值所在的索引位置 整數 idxmin idxmax 計算最小值與最大值所在的索引標...