小编rpa*_*nai的帖子

Hive 数据到 Pandas 数据框

Python 新手。

如何将数据从 hive 保存到 Pandas 数据框。

with pyhs2.connect(host, port=20000,authMechanism="PLAIN",user,password,
               database) as conn:
    with conn.cursor() as cur:
        #Show databases
        print cur.getDatabases()

        #Execute query
        cur.execute(query)

        #Return column info from query
        print cur.getSchema()

        #Fetch table results
        for i in cur.fetch():
            print i
        **columnNames = [a['columnName'] for a in  cur.getSchema()]
        print columnNames
        df1=pd.DataFrame(cur.fetch(),columnNames)**
Run Code Online (Sandbox Code Playgroud)

尝试使用列名。没用。

请。提出一些建议。

python hadoop hive pandas

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

Dask DataFrame 的逐行处理

我需要处理一个大文件并更改一些值。

我想做这样的事情:

for index, row in dataFrame.iterrows():

        foo = doSomeStuffWith(row)
        lol = doOtherStuffWith(row)

        dataFrame['colx'][index] = foo
        dataFrame['coly'][index] = lol
Run Code Online (Sandbox Code Playgroud)

对我不好,我不能做 dataFrame['colx'][index] = foo

我的行数很大,我需要处理大量的列。因此,如果我为每一列执行一个 dataFrame.apply(...) ,我担心 dask 可能会多次读取文件。

其他解决方案是手动将我的数据分成块并使用 Pandas 或将任何内容放入数据库中。但是,如果我可以继续使用我的 .csv 并让 dask 为我进行块处理,那就太好了!

感谢您的帮助。

python pandas dask

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

Dask:使用groupby获取组中具有最大值的行

同样的问题可以在 Pandas 中使用转换来解决,如这里所解释的 使用 dask 是我发现使用合并的唯一有效解决方案。我想知道是否还有其他方法可以实现它。

python group-by dataframe dask

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

Dask 数据帧 known_divisions 和性能

我有几个文件,其中有一列被调用idx,我想将它用作索引。获得的数据帧大约有 13M 行。我知道我可以通过这种方式读取和分配索引(这很慢~40秒)

df = dd.read_parquet("file-*.parq")
df = df.set_index("idx")
Run Code Online (Sandbox Code Playgroud)

或以其他方式(快约 40 毫秒)

df = dd.read_parquet("file-*.parq", index = "idx")
Run Code Online (Sandbox Code Playgroud)

使用第二种方法计算长度的简单操作要快 4 倍。我不明白的是

  • 在第一种情况下df.known_divisions返回,True而在第二种情况下是False。我期待相反的行为。然后我df在没有 known_division 的情况下做了几个操作,我总是获得更好的性能。我正在挠头想知道这是否是故意发生的。
  • 分区数就是文件数。如何设置不同数量的分区?

更新 这不仅仅是计算len哪个更快。在我的计算中,我使用 groupby 创建了 4 个新数据帧,多次申请和加入,这些是时间

|                  |Load and reindex (s)|Load with index (s)|
|:-----------------|-------------------:|------------------:|
| load             |            12.5000 |            0.0124 |
| grp, apply, join |            11.4000 |            6.2700 |
| compute()        |           146.0000 |          125.0000 |
| TOTAL            |           169.9000 | …
Run Code Online (Sandbox Code Playgroud)

python dask

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

Pandas Pivot 创建 NaN

鉴于此示例数据框,

         Cents      Date
MN                                         
Shop        0.03  01012019
Shop        0.22  01012019
Shop        0.12  01012019
Shop        0.08  02012019
Shop        0.02  02012019
Shop        0.02  02012019
Shop        0.02  03012019
Shop        0.09  03012019
Shop        0.11  03012019
Shop        0.02  04012019
Shop        0.03  04012019
Shop        0.04  04012019
Run Code Online (Sandbox Code Playgroud)

我想重塑我的数据框成为

在此处输入图片说明

到目前为止我尝试过的,

  1. 删除原始样本数据帧的索引

    df1 = df.reset_index(drop=True)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 旋转示例数据框,

    df1.pivot(index=None, columns='Date', values='Cents')
    
    Run Code Online (Sandbox Code Playgroud)

旋转后我无法获得想要的结果,这就是我得到的

在此处输入图片说明

有人可以告诉我为什么会这样吗?我很确定它与数据透视表如何与我的数据框一起工作有关(也许我需要一个在这种情况下我不能拥有的唯一索引?)。如果您能让我知道我应该如何继续,我将不胜感激。

谢谢你。

python pandas

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

在 Plotly Python 中更改子图标题位置/方向

我需要在 python 中以 plotly 更改子图标题,即将其旋转 90 度。我很努力,但没有成功。

这是我的代码

import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools

trace1 = go.Bar(
    x=[1, 2, 3],
    y=[10, 11, 12]
)
trace2 = go.Bar(
    x=[1, 2, 3],
    y=[100, 110, 120],
)
trace3 = go.Bar(
    x=[1, 2, 3],
    y=[1000, 1100, 1200],
)

fig = tools.make_subplots(rows=1, cols=3,
                          shared_xaxes=True, shared_yaxes=True,
                          vertical_spacing=0.001,
                          subplot_titles = ('first_title', 'second_title', 'third_title'))

fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)

fig['layout'].update(height=600, width=600, title='main_title')

pyo.plot(fig, filename='file.html')
Run Code Online (Sandbox Code Playgroud)

所以,我想旋转'first_title''second_title' …

python plotly plotly-dash plotly-python

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

如何在Python API中使用plotly在x轴范围中间位置绘制一条垂直线?

我正在尝试绘制一条动态定位的垂直线,以便在进行过滤时,该线将相应地移动。例如,使用下面的代码,我可以在25K处绘制一条固定的垂直线,该垂直线将整个数据集用作中值,但是当数据被过滤为“ Americas”时(仅因为x轴范围现在为45K),该线不再位于中间位置。

那么,如何绘制位于x轴范围的中间位置的垂直线呢?谢谢

import pandas as pd
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot

init_notebook_mode(connected=True)


df = pd.read_csv('https://raw.githubusercontent.com/yankev/test/master/life-expectancy-per-GDP-2007.csv')

americas = df[(df.continent=='Americas')]
europe = df[(df.continent=='Europe')]

trace_comp0 = go.Scatter(
    x=americas.gdp_percap,
    y=americas.life_exp,
    mode='markers',
    marker=dict(size=12,
                line=dict(width=1),
                color="navy"
               ),
    name='Americas',
    text=americas.country,
    )

trace_comp1 = go.Scatter(
    x=europe.gdp_percap,
    y=europe.life_exp,
    mode='markers',
    marker=dict(size=12,
                line=dict(width=1),
                color="red"
               ),
    name='Europe',
    text=europe.country,
        )

data_comp = [trace_comp0, trace_comp1]
layout_comp = go.Layout(
    title='Life Expectancy v. Per Capita GDP, 2007',
    hovermode='closest',
    xaxis=dict(
        title='GDP per capita (2000 dollars)',
        ticklen=5,
        zeroline=False,
        gridwidth=2,
        range=[0, 50_000],
    ),
    yaxis=dict( …
Run Code Online (Sandbox Code Playgroud)

python plotly

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

Pandas Merge and filter

I used merge to create a dataframe between 2 of my query's. Now in the dataframe I want to put a filter on a column but I cannot get it to work. I am trying to add filter component date is null or blank.

    ##reading data from sql
    package = pd.read_sql(sql,con)
    component = pd.read_sql(sqla,con)

    ##doing the left join
    test2 = pd.merge(package,component, on = ['identifier','date'], how='left')

    ##shrinking the dataframe   
    test3 = test2[['identifier_x']].copy()
Run Code Online (Sandbox Code Playgroud)

i've tried doing the below but cannot get it …

python pandas

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

从 SageMaker 将数据帧上传到 AWS S3 Bucket

我是 AWS 环境的新手,正在尝试解决数据流的工作原理。将 CSV 文件从 S3 成功上传到 SageMaker 笔记本实例后,我坚持做相反的事情。

我有一个数据框,想将其作为 CSV 或 JSON 上传到 S3 Bucket。我的代码如下:

bucket='bucketname'
data_key = 'test.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)
df.to_csv(data_location)
Run Code Online (Sandbox Code Playgroud)

我假设因为我pd.read_csv()在加载时成功使用,使用df.to_csv()也可以,但它没有。可能它会产生错误,因为这样我无法在手动将文件上传到 S3 时选择隐私选项。有没有办法将数据从 SageMaker 上传到 S3?

python amazon-s3 amazon-web-services pandas amazon-sagemaker

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

从字典创建 dask 数据框

我有一本这样的字典:

d = {'Caps': 'cap_list', 'Term': 'unique_tokens', 'LocalFreq': 'local_freq_list','CorpusFreq': 'corpus_freq_list'}
Run Code Online (Sandbox Code Playgroud)

我想从中创建一个 dask 数据框。我该怎么做?通常,在 Pandas 中,可以通过以下方式轻松地将 is 导入到 Pandas df 中:

df = pd.DataFrame({'Caps': cap_list, 'Term': unique_tokens, 'LocalFreq': local_freq_list,
                               'CorpusFreq': corpus_freq_list})
Run Code Online (Sandbox Code Playgroud)

我应该先加载到包中,然后从包转换为 ddf 吗?

pandas dask

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