小编Mat*_*ias的帖子

熊猫数据框滚动两列两行

我有一个包含两列的数据框,其中包含经度和纬度坐标:

将熊猫作为pd导入

values = {'Latitude': {0: 47.021503365600005,
  1: 47.021503365600005,
  2: 47.021503365600005,
  3: 47.021503365600005,
  4: 47.021503365600005,
  5: 47.021503365600005},
 'Longitude': {0: 15.481974060399999,
  1: 15.481974060399999,
  2: 15.481974060399999,
  3: 15.481974060399999,
  4: 15.481974060399999,
  5: 15.481974060399999}}

df = pd.DataFrame(values)
df.head()
Run Code Online (Sandbox Code Playgroud)

现在,我想在数据框上应用滚动窗口函数,该函数采用一行和另一行(窗口大小为2)的经度和纬度(两列)来计算hasrsine距离。

def haversine_distance(x):
    print (x)

df.rolling(2, axis=1).apply(haversine_distance)
Run Code Online (Sandbox Code Playgroud)

我的问题是,我从未获得全部四个值Lng1,Lat1(第一行)和Lng2,Lat2(第二行)。如果我使用axis = 1,则将获得第一行的Lng1和Lat1。如果我使用axis = 0,那么我将获得第一行和第二行的Lng1和Lng2,但仅限经度。

如何使用两行两列应用滚动窗口?有点像这样:

def haversine_distance(x):
    row1 = x[0]
    row2 = x[1]
    lng1, lat1 = row1['Longitude'], row1['Latitude']
    lng2, lat2 = row2['Longitude'], row2['Latitude']
    # do your stuff here
    return 1
Run Code Online (Sandbox Code Playgroud)

目前,我正在通过shift(-1)将数据框与其自身连接在一起,从而在一行中生成所有四个坐标,从而进行此计算。但是滚动也应该是可能的。另一种选择是将Lng和Lat合并为一列,并在其上应用axis = 0的滚动。但是必须有一种更简单的方法,对吗?

python pandas rolling-computation

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

Android:如何在另一种布局的XML中使用样式中的颜色

我用XML获得了这种风格:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="AppTheme.Base"/>

    <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->

        <!-- colorPrimary is used for the default action bar background -->
        <item name="colorPrimary">@color/teal_500</item>

        <!-- colorPrimaryDark is used for the status bar -->
        <item name="colorPrimaryDark">@color/teal_700</item>

        <!-- colorAccent is used as the default value for colorControlActivated
             which is used to tint widgets -->
        <item name="colorAccent">@color/light_blue_500</item>

        <!-- needed to suppress the old ActionBar when using the new Toolbar -->
        <item name="android:windowActionBar">false</item>

        <!-- …
Run Code Online (Sandbox Code Playgroud)

xml android android-layout android-theme

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

PySpark:一步计算平均值,标准偏差和平均值附近的那些值

我的原始数据采用表格格式。它包含来自不同变量的观察结果。每个观察带有变量名,时间戳和当时的值。

变量[string],时间[datetime],值[float]

数据作为Parquet存储在HDFS中,并加载到Spark Dataframe(df)中。从该数据帧。

现在,我想为每个变量计算默认统计信息,例如均值,标准偏差和其他统计信息。之后,一旦检索到均值,我便要过滤/计算那些与均值紧密相关的变量的值。

由于对其他问题的回答,我想到了以下代码:

from pyspark.sql.window import Window
from pyspark.sql.functions import *
from pyspark.sql.types import *

w1 = Window().partitionBy("Variable")
w2 = Window.partitionBy("Variable").orderBy("Time")

def stddev_pop_w(col, w):
    #Built-in stddev doesn't support windowing
    return sqrt(avg(col * col).over(w) - pow(avg(col).over(w), 2))

def isInRange(value, mean, stddev, radius):
    try:
        if (abs(value - mean) < radius * stddev):
            return 1
        else:
            return 0
    except AttributeError:
        return -1

delta = col("Time").cast("long") - lag("Time", 1).over(w2).cast("long")
#f = udf(lambda (value, mean, stddev, radius): abs(value - mean) …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 apache-spark pyspark

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

Eclipse:无法导入部分或全部项目,因为它们已存在于工作空间中

对不起,我知道经常会问这个问题.但非场景适合我的问题.

我在Git中使用Eclipse(在Win7中).在Git分支中,我创建了一个新项目.然后我换回了主分支.项目不在工作区中.但是当我想添加它时,我收到以下错误:

无法导入部分或全部项目,因为它们已存在于工作区中

我的问题是,项目不在工作区中 - 如Eclipse中所示.但可以肯定的是,它位于硬盘上,因为它是我的Git存储库的一部分.所以我不能删除它.根据其他帖子,我将其从此文件夹中删除:

C:\开发\ workspace.metadata.plugins\org.eclipse.core.resources.projects

但我仍然无法将其重新添加到Eclipse工作区.任何的想法?

java eclipse git

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

Android:动画圆形进度可绘制

我需要一个看起来像旋转进度圈的 drawable。我想在 GridView 等内的 ImageView 中使用的那个 drawable。

因此,根据其他帖子,我从文件夹 \sdk\platforms\android-xx\data\res\drawable 中取出了progress_medium_holo.xml,看起来像这样。我还复制了这个 drawable 使用的 PNG 文件。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <rotate
             android:drawable="@drawable/spinner_48_outer_holo"
             android:pivotX="50%"
             android:pivotY="50%"
             android:fromDegrees="0"
             android:toDegrees="1080" />
    </item>
    <item>
        <rotate
             android:drawable="@drawable/spinner_48_inner_holo"
             android:pivotX="50%"
             android:pivotY="50%"
             android:fromDegrees="720"
             android:toDegrees="0" />
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在我的布局中,我然后使用了这个 ImageView,它使用了进度可绘制。

<ImageView
    android:id="@+id/element_image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    android:src="@drawable/progress_medium_holo" />
Run Code Online (Sandbox Code Playgroud)

静态进度圈

但结果是一个静态的循环进程。有没有一种方法可以通过 XML 定义并且不使用代码来制作动画?

animation android drawable android-layout android-drawable

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

View.getLocationOnScreen无法正常工作

我想将视图的边界投影/转换为屏幕坐标。局部范围是0,0,1280,628,正好在我的视图上方的ActionBar高108像素。

问题是view.getLocationOnScreen将第一个点转换为正确的0x108。但它也会将所有其他角(1280x0、1280x628、0x628)再次转换为0x180。知道为什么吗?

那是我的代码。

public static void getLocationOnScreen(View view, final Rect src, Rect dst) {
    if (view == null || src == null)
        return;

    if (dst == null)
        dst = new Rect();

    Point[] corners = RectTools.getCornerPoints(src);
    int[] location = new int[2];

    for (int i = 0; i < corners.length; i++) {
        Point current = corners[i];
        location[0] = current.x;
        location[1] = current.y;

        view.getLocationOnScreen(location);

        corners[i] = new Point(location[0], location[1]);
    }

    createRectangle(dst, corners);
}
Run Code Online (Sandbox Code Playgroud)

android view coordinate-systems coordinate-transformation

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

如何在Python中将一维图像数组转换为PIL图像

我的问题与Kaggle 数据科学竞赛有关。我正在尝试从包含28x28 图像的1 位灰度像素信息(0 到 255)的一维数组中读取图像。因此数组从0 到 783,其中每个像素都编码为 x = i * 28 + j。

转换成二维 28x28 矩阵如下:

000 001 002 003 ... 026 027
028 029 030 031 ... 054 055
056 057 058 059 ... 082 083
 |   |   |   |  ...  |   |
728 729 730 731 ... 754 755
756 757 758 759 ... 782 783
Run Code Online (Sandbox Code Playgroud)

出于图像处理(调整大小、倾斜)的原因,我想将该数组读入内存中的 PIL 图像。我对Matplotlib 图像函数做了一些研究,我认为这是最有前途的。另一个想法是Numpy 图像函数

我正在寻找的是一个代码示例,它向我展示了如何通过 Numpy …

python numpy image matplotlib python-imaging-library

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

Jupyter 笔记本执行程序是否在 Apache Spark 中动态分布?

我有一个问题是为了更好地理解 Apache Hadoop Spark 中的大数据概念。不确定它在本论坛中是否偏离主题,但请告诉我。

想象一个 Apache Hadoop 集群有 8 个服务器,由 Yarn 资源管理器管理。我将一个文件上传到 HDFS(文件系统),该文件配置了 64MB 块大小和 3 个复制计数。然后将该文件拆分为 64MB 块。现在让我们假设块由 HDFS 分发到节点 1、2 和 3。

但现在我正在用 Jupyter 笔记本编写一些 Python 代码。因此,笔记本使用以下命令启动:

PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark --master yarn-client --num-executors 3 --executor-cores 4 --executor-memory 16G

在笔记本中,我从 HDFS 加载文件以进行一些分析。当我执行我的代码时,我可以在 YARN Web-UI 中看到我有 3 个执行程序以及如何将作业提交(分发)给执行程序。

有趣的部分是,我的执行器在启动命令之后立即固定到特定的计算节点(见上文)。例如节点 6、7 和 8。

我的问题是:

  1. 我的假设是否正确,即执行器节点固定到计算节点,并且一旦我从 HDFS 访问(加载)文件,HDFS 块将被传输到执行器?
  2. 或者,执行器是否在数据所在的节点(节点 1、2 和 3)上动态分配和启动。在这种情况下,我在 YARN web-ui 中的观察肯定是错误的。

我真的很想更好地理解这一点。

集群设置

python apache-spark pyspark jupyter jupyter-notebook

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

Dataframe.toPandas 总是在驱动程序节点上还是在工作程序节点上?

想象一下,您正在通过 SparkContext 和 Hive 加载一个大型数据集。所以这个数据集然后分布在你的 Spark 集群中。例如,对数千个变量的观察(值 + 时间戳)。

现在您将使用一些 map/reduce 方法或聚合来组织/分析您的数据。例如按变量名称分组。

分组后,您可以获得每个变量的所有观察值(值)作为时间序列数据框。如果您现在使用 DataFrame.toPandas

def myFunction(data_frame):
   data_frame.toPandas()

df = sc.load....
df.groupBy('var_name').mapValues(_.toDF).map(myFunction)
Run Code Online (Sandbox Code Playgroud)
  1. 这是在每个工作节点上转换为 Pandas 数据帧(每个变量),还是
  2. Pandas 数据帧是否总是在驱动程序节点上,因此数据从工作节点传输到驱动程序?

python hadoop pandas apache-spark pyspark

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

大查询:带有列前缀的 SQL JOIN

我在 Google Big Query 中有两个表。第一个表是产品目录 (1:1),第二个表是产品相关信息 (1:n)。对于查询,我将两者都加入。但连接失败,因为pid两个表中都存在该列和其他一些列。

#standardSQL
SELECT tbl1.*, tbl2.* FROM (
  SELECT * FROM `my_project.my_dataset.my_table_1`
  ) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
ON tbl1.pid = tbl2.pid
WHERE tbl1.category LIKE '111002%'
Run Code Online (Sandbox Code Playgroud)

想法1:如何*在没有重复列的情况下进行选择(我可以手动输入)。

想法2:如何为连接中的列提供左/右前缀?

任何帮助表示赞赏。

google-bigquery

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

Pandas DataFrame:将数据扩展到整月

我得到了每月时间跟踪预订的数据。由于周末和国定假日都没有预订,因此数据丢失了几天。现在我正在扩展数据,使其包括该月的所有天数,但仅包含空数据。这是我解决它的方法。我想知道是否有更优雅的方式来实现同样的事情?

为列索引的示例输入数据start

+---------------------+--------+-------+----------+-----------------+---------+
| start               | from   | to    | paused   |   hours_working |   error |
|---------------------+--------+-------+----------+-----------------+---------|
| 2019-11-04 00:00:00 | 08:30  | 18:00 | 00:30    |               9 |       0 |
| 2019-11-05 00:00:00 | 09:30  | 19:00 | 00:30    |               9 |       0 |
| 2019-11-06 00:00:00 | 09:00  | 18:00 | 01:00    |               8 |       0 |
+---------------------+--------+-------+----------+-----------------+---------+
Run Code Online (Sandbox Code Playgroud)

然后我检索第一个时间戳,然后我用它来为整个月创建一个周期/索引:

# get first day of the month
first_timestamp = df.index[0].replace(day=1).strftime("%Y-%m-%d")

# build an index containing all days …
Run Code Online (Sandbox Code Playgroud)

python indexing date-range dataframe pandas

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

获取数组的第二维长度

我在这个主题上找到了不同的帖子,但我找不到合适的解决方案,也无法理解代码.无论如何,我确实有一个数组,其工作方式类似于具有列和行的非平方矩阵.从那个数组我想稍后检索列数和行数.

this.myArray = new AreaTuple[cols][rows];
Run Code Online (Sandbox Code Playgroud)

但是怎么样?我知道这在C#中是如何工作的,但在Java中却不行.

java arrays android multidimensional-array

0
推荐指数
2
解决办法
2220
查看次数

Pandas:将一行的多列连接到多行(1:n)

我有一个包含许多键/值列的数据框,而键和值是分隔的列.

import pandas as pd

values = [['John', 'somekey1', 'somevalue1', 'somekey2', 'somevalue2']]
df = pd.DataFrame(values, columns=['name', 'key1', 'value1', 'key2', 'value2'])
Run Code Online (Sandbox Code Playgroud)

备注:原始数据将包含更多前面的列,而不仅仅是名称.它不仅仅包含两个键/值列.

我想要实现的是这样的结果:

values = [
    ['John', 'somekey1', 'somevalue1'],
    ['John', 'somekey2', 'somevalue2']
]
df = pd.DataFrame(values, columns=['name', 'key', 'value'])
Run Code Online (Sandbox Code Playgroud)

在那里,我想将所有键/值列连接到列表或字典中,而不是爆炸该列表/字典.我在pd.melt上找到了这个不错的帖子,但我的问题是,我不知道确切的id_var列在前面.因此我尝试了pd.Series.stack,它为键/值列提供了正确的结果,但是缺少原始数据中的其他列.任何的想法?这是我试过的:

# generates: [(somekey1, somevalue1), (somekey2, somevalue2)]
df['pairs'] = df.apply(lambda row: [(row['key1'],row['value1']), (row['key2'], row['value2'])], axis=1)
# unstacks the list, but drops all other columns
df['pairs'].apply(pd.Series).stack().reset_index(drop=True).to_frame('pairs')
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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