简介在这篇文章中,我将向您展示如何使用 pandas 通过 sql 样式过滤来执行数据分析。大多数企业数据都存储在需要 SQL 来检索和操作的数据库中。例如,像 oracle、IBM、Microsoft 这样的公司拥有自己的数据库和自己的
在这篇文章中,我将向您展示如何使用 pandas 通过 sql 样式过滤来执行数据分析。大多数企业数据都存储在需要 SQL 来检索和操作的数据库中。例如,像 oracle、IBM、Microsoft 这样的公司拥有自己的数据库和自己的 SQL 实现。
数据科学家必须在其职业生涯的某个阶段处理 SQL,因为数据并不总是存储在CSV 文件。我个人更喜欢使用 Oracle,因为我公司的大部分数据都存储在 Oracle 中。
场景 – 1 假设我们有一个任务,从我们的电影中查找所有电影具有以下条件的数据集。
SELECT
FROM WHERE
title AS movie_title
,original_language AS movie_language
,popularityAS movie_popularity
,statusAS movie_status
,vote_count AS movie_vote_count movies_data
original_languageIN ('en', 'es')
AND status=('Released')
AND popularitybetween 500 AND 1000
AND vote_count > 5000;
现在你已经看到了满足需求的SQL语句,让我们使用pandas一步一步地进行操作。我将向你展示两种方法。
1. 将movies_data数据集加载到DataFrame中。
import pandas as pd movies = pd.read_csv("https://raw.GitHubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")
为每个条件分配一个变量。
languages = [ "en" , "es" ] condition_on_languages = movies . original_language . isin ( languages )
condition_on_status = movies . status == "Released"
condition_on_popularity = movies . popularity . between ( 500 , 1000 )
condition_on_votecount = movies . vote_count > 5000
3.将所有条件(布尔数组)组合在一起。
final_conditions = ( condition_on_languages & condition_on_status & condition_on_popularity & condition_on_votecount )
columns = [ "title" , "original_language" , "status" , "popularity" , "vote_count" ]
# clubbing all together movies . loc [ final_conditions , columns ]
标题 | original_language | 状态 | 受欢迎程度 | vote_count< p> |
---|---|---|---|---|
95星际 | zh | 已发布 | 724.247784 | 10867 < /td> |
788死侍 | zh | 已发布 | 514.569956 | 10995 |
.query()方法是SQL where子句样式过滤数据的方法。条件可以作为字符串传递给此方法,但是,列名称不得包含任何空格。
如果列名称中有空格,请使用 python 替换函数将其替换为下划线。< /p>
根据我的经验,我发现 query() 方法在应用于较大的 DataFrame 时比以前的方法更快。
import pandas as pd movies = pd . read_csv ( "Https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv" )
4.构建查询字符串并执行该方法。
请注意,.query 方法不适用于跨越多行的三重引号字符串。
final_conditions = (
"original_language in ['en','es']"
"and status == 'Released' "
"and popularity > 500 "
"and popularity < 1000"
"and vote_count > 5000"
) final_result = movies . query ( final_conditions )
final_result
预算< /p> | id | original_language | original_title | 受欢迎程度 | 发布日期 | 收入 | 运行时 | st | |
---|---|---|---|---|---|---|---|---|---|
95 | 165000000 | 157336 | zh | 星际 | 724.247784 | 2014年5月11日< /p> | 675120017 | 169.0 | 关系 |
788 | 58000000 | < td>293660zh | 死侍 | 514.569956 p> | 2016年9月2日 | 783112979 | 108.0 | 关系 |
您还可以以编程方式将值创建为 Python 列表,并将它们与 (@) 一起使用。
movie_languages = [ 'en' , 'es' ]
final_conditions = (
"original_language in @movie_languages "
"and status == 'Released' "
"and popularity > 500 "
"and popularity < 1000"
"and vote_count > 5000" )
final_result = movies . query ( final_conditions )
final_result
预算 | id | original_language | original_title | 受欢迎程度 | 发布日期 | 收入 | 运行时 | st | |
---|---|---|---|---|---|---|---|---|---|
95 | 165000000 | 157336 | zh | 星际 | 724.247784 | 2014年5月11日 | 675120017 | 169.0 | 关系 |
788 | 58000000 | 293660zh | 死侍 | 514.569956 p> | 2016年9月2日 | 783112979 | 108.0 | 关系 |
--结束END--
本文标题: 如何在 Pandas 的 SQL 查询样式中选择数据子集?
本文链接: https://lsjlt.com/news/436323.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0