小编Ami*_*mir的帖子

使用 Lambda 函数运行 AWS Athena 的查询

我在 AWS Athena 上创建了一个表,可以在其中运行任何查询而不会出现任何错误:

select * from mytestdb.test
Run Code Online (Sandbox Code Playgroud)

该表有三列,customer_Id, product_Id, price

我尝试创建一个 lambda 函数,使用 boto3 为我运行相同的查询:

import time
import boto3

DATABASE = 'mytestdb'
TABLE = 'test'

output='s3://mybucketons3/'

COLUMN = 'Customer_Id'

def lambda_handler(event, context):

    keyword = 'xyz12345'

    query = "SELECT * FROM %s.%s where %s = '%s';" % (DATABASE, TABLE, COLUMN, keyword)

    client = boto3.client('athena')

    # Execution
    response = client.start_query_execution(
        QueryString=query,
        QueryExecutionContext={
            'Database': DATABASE
        },
        ResultConfiguration={
            'OutputLocation': output,
        }
    )


    return
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Response:
{
  "errorMessage": "An error occurred (AccessDeniedException) …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda

8
推荐指数
1
解决办法
2万
查看次数

SQL将nvarchar转换为float

我有一个带柱子的桌子Quantity; 在原始表中,此列定义为,nvarchar(100)因此我需要将其转换为float以便能够进行一些分析:

CAST([Quantity] AS FLOAT) AS Quantity      
Run Code Online (Sandbox Code Playgroud)

问题是我有一些不能转换为浮点数的值No-Quantity,Return等等.我有过滤器来排除这些值,然后将rest转换为float.On选项是使用where子句:

WHERE Quantity IN ('Return', 'Sales')
Run Code Online (Sandbox Code Playgroud)

这不是最好的方法,因为如果我们在原始表中有新值,那么我需要弄清楚它是什么并将其添加到where子句中.

我想知道是否有更好的方法来识别不可兑换的价值?

sql type-conversion

5
推荐指数
2
解决办法
3万
查看次数

将Pandas Series作为列追加到DataFrame

我有像['key','col1','col2','col3']之类的panadas数据框(df),并且我的pandas系列(sr)的索引与数据框中的'key'相同。我想用相同的“键”将系列附加到名为col4的新列的数据框中。我有以下代码:

for index, row in segmention.iterrows():    
     df[df['key']==row['key']]['col4']=sr.loc[row['key']]
Run Code Online (Sandbox Code Playgroud)

代码很慢。我认为应该有更有效,更好的方法来做到这一点。能否请你帮忙?

series pandas

4
推荐指数
2
解决办法
8774
查看次数

使用 Networkx 可视化大图

我有一个节点1、节点2 形式的数据集,想要使用网络来构建图表。这是一个相当大的数据集,导致图具有 500k 个节点

import pandas as pd
import numpy as np
import networkx as nx

df = pd.read_csv('large.csv')
G=nx.from_pandas_edgelist(df, 'node1','node2')
Run Code Online (Sandbox Code Playgroud)

这部分代码运行速度非常快,将数据帧转换为图形。然后我尝试应用弹簧布局:

pos = nx.spring_layout(G)
Run Code Online (Sandbox Code Playgroud)

这部分代码需要很长时间。如果我尝试不同的布局,如circular_layout或shell_layout,它会非常快,但布局与我的图表相符。

对于这么大的图,有没有更好的方法来应用 spring_layout ?

python graph networkx

4
推荐指数
1
解决办法
7433
查看次数

多索引系列到熊猫数据框

我有一个带有两个索引的熊猫系列:

df_agg=df.groupby(['yearID','teamID']).sum()['Salary']
df_agg.head()

yearID  teamID
1985    ATL       14807000
        BAL       11560712
        BOS       10897560
        CAL       14427894
        CHA        9846178
Run Code Online (Sandbox Code Playgroud)

我想将 int 转换为 Pandas 数据框,例如

yearID     teamID    Salary
1985        ATL       14807000
1985        BAL       11560712
1985        BOS       10897560
1985        CAL       14427894
1985        CHA        9846178
Run Code Online (Sandbox Code Playgroud)

我厌倦了使用:

df_new=df_agg.reset_index(inplace=True)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:


TypeError Traceback(最近一次调用最后一次) in () ----> 1 df_new=df_agg.reset_index(inplace=True)

C:\Users\ameimand\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\series.py in reset_index(self, level, drop, name, inplace) 966

    index=new_index).__finalize__(self)
    967         elif inplace:
--> 968             raise TypeError('Cannot reset_index inplace on a Series '
    969                             'to create a DataFrame')
    970         else:

TypeError: Cannot …
Run Code Online (Sandbox Code Playgroud)

aggregation pandas

3
推荐指数
1
解决办法
5782
查看次数

使用映射转换pandas数据框

我有一个熊猫数据框.Df1有客户信息:

Customer_Name    Demand
John               100
Mike               200
...
Run Code Online (Sandbox Code Playgroud)

还有一个字典,其中包含客户名称和客户代码之间的映射

Customer_Name    Customer_Code
John               1
Mike               2
...
Run Code Online (Sandbox Code Playgroud)

我想提出一个像Df1这样的新数据框,但是使用客户代码而不是名称:

Customer_Code    Demand
    1              100
    2               200
    ...
Run Code Online (Sandbox Code Playgroud)

为此,我使用以下代码:

df3=data.replace({"customer_code": mapp})
Raw=data_m[['Demand','customer_code]]
Run Code Online (Sandbox Code Playgroud)

它给了我正确的结果,但它很慢.我想知道是否有更有效的方法进行这种映射和转换?

python dataframe pandas

1
推荐指数
1
解决办法
393
查看次数

在Python中向列表添加额外元素的有效方法

我有列表列表,如:

[[0, 1, 2], 
 [3, 1], 
 [2, 0, 1], 
 [4, 3], 
 [1, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

列表值介于0和5之间.现在我想要5+(每个列表中不存在5以下的数字).例如,在第一个列表中我们有0,1,2而我们没有3,4这样我们想要添加5 + 3 = 8和5 + 4 = 9所以最终他的新列表应该有0,1,2 ,8,9.最终的出局应该是:

[[0, 1, 2, 8, 9],
 [3, 1, 5, 7, 9],
 [2, 0, 1, 8, 9],
 [4, 3, 5, 6, 7],
 [1, 3, 4, 5, 7]]
Run Code Online (Sandbox Code Playgroud)

为此,我编写了以下python代码:

k = -1
for i in X1:
    k = k + 1
    for j in range(5, 10):        
        if j - 5 not in i:
            X[k].append(j)
Run Code Online (Sandbox Code Playgroud)

但是对于大型数据集(列表),这需要永远.我想知道是否有更有效的方法/建议我可以用于这种情况?

python performance list

1
推荐指数
1
解决办法
218
查看次数

使用 Netwrokx 进行重叠社区检测

我正在尝试使用 networkx(链接)运行整体 ping 社区检测

networkx 版本是 2.1:

import networkx as nx
...
c = list(nx.k_clique_communities(G, 4))
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:模块“networkx”没有属性“k_clique_communities”。不知道为什么该属性不存在

python networkx

1
推荐指数
1
解决办法
690
查看次数