【问题标题】:SQL query execution using panda library使用 pandas 库执行 SQL 查询
【发布时间】:2018-07-16 13:34:23
【问题描述】:

我有一个类似这样的 SQL 查询“select (ShipMode),(count(OrderID)*100/8994) as Score from friends.sampledatapanda(我有一个 CSV 文件,所以忽略这个) 按 1 分组。我想在 Jupyter 上使用 panda 库执行相同的操作。 请帮忙。

【问题讨论】:

  • 你是说你有一个 .csv 文件,你想用 pandas 读取并复制你的 SQL 查询,或者你想用 pandas 对你的数据库执行 SQL 查询?
  • 嘿,本!我有 CSV 文件,我必须在其上执行此 SQL 查询。我已经使用 pandas 读取了文件,现在我必须执行我提到的这个查询。
  • 你能发布一个 .csv 文件的样本和你期望的输出吗?
  • Ben,您可以查看我的 csv 文件并从此处下载。我正在对同一个 csv 文件执行操作。链接是community.tableau.com/docs/DOC-1236 我期待的输出是 Ship 模式,OrderID First Class 1538 Same Day 543 Second Class 1945 Standard Class 5968
  • 谢谢。您只是在寻找船舶模式的记录计数吗?

标签: mysql sql pandas pandas-groupby pandasql


【解决方案1】:

您可以使用 pandas 的 value_counts() 方法来统计值的数量,并使用 normalize=True 参数来获取频率。假设您已将数据读入名为 df 的 DataFrame:

df['Ship Mode'].value_counts(normalize=True)

Out[3]:

Standard Class    0.597158
Second Class      0.194617
First Class       0.153892
Same Day          0.054333
Name: Ship Mode, dtype: float64

【讨论】:

  • 本,你说得对!但是一个简单的问题,但是如果我只想要关于订单 ID 的值怎么办?由于 MySQL 中的结果与当前结果有很大不同。如果您愿意,我将向您展示 MySQL 查询的结果。非常感谢先生。
  • 如果你能向我展示你的 MySQL 查询的结果会很棒,那么我会相应地更新我的答案。
  • Standard Class,0.6636 Second Class,0.2163 Same Day,0.0604 First Class,0.1710 第一列是船模式,第二列是订单id的计数除以CSV中的总行数这是8994(找出百分比)
  • 我从您评论中的链接下载的数据文件包含 9,994 行。 normalize=True 参数是查找计数并除以非 NaN 行的数量(其中没有)。你能检查你的 DataFrame 中的记录数吗?
  • 本,我的错还是我的错。现在问题已经解决了。非常感谢。现在可以了。 :)
猜你喜欢
  • 2018-02-02
  • 1970-01-01
  • 2014-08-15
  • 2010-12-24
  • 1970-01-01
  • 2023-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多