小编Alh*_*lta的帖子

像Qlik一样计算pandas数据帧中列中的唯一值?

如果我有这样的表格:

df = pd.DataFrame({
         'hID': [101, 102, 103, 101, 102, 104, 105, 101],
         'dID': [10, 11, 12, 10, 11, 10, 12, 10],
         'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
         'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})
Run Code Online (Sandbox Code Playgroud)

我可以count(distinct hID)在Qlik中为独特的hID计算出5的计数.我如何使用pandas数据框在python中做到这一点?或者也许是一个numpy阵列?同样,如果要这样做,count(hID)我会在Qlik得到8分.在熊猫中做同样的事情是什么?

python numpy qlikview pandas qliksense

49
推荐指数
5
解决办法
11万
查看次数

在Chrome中为本地主机启用地理位置

我对Javascript / html5很陌生。我基本上是在研究Rbon Nixon的书(第4版,学习PHP,MySQL和Javascript ...)中提供的代码。示例22-2与“在用户位置显示地图”有关。
我陷入了以下代码片段的if部分:

    <script>
        if (typeof navigator.Geolocation=='undefined')
            alert("Geolocation not supported.")
    </script>  
Run Code Online (Sandbox Code Playgroud)

从表面上看,我显然应该为本地主机启用浏览器的地理位置定位。我正在使用chrome(版本60.0.3112.113)。但是,当我转到“设置” >>“高级” >>“内容设置” >>“位置”时
,启用了“访问前询问”选项。然后是“阻止”和“允许”部分。但是它没有给我添加本地主机的选项。如何启用它,以便可以在代码中使用地理位置并在计算机上对其进行测试?

javascript html5 google-chrome geolocation

6
推荐指数
0
解决办法
2179
查看次数

熊猫在执行 groupby 后重置索引并保留选择性列

我想获取一个 Pandas 数据框,按列计算唯一元素并保留 2 列。但是我在 groupby 之后得到了一个多索引数据框,我无法 (1) 展平 (2) 只选择相关列。这是我的代码:

import pandas as pd
df = pd.DataFrame({
'ID':[1,2,3,4,5,1],
'Ticker':['AA','BB','CC','DD','CC','BB'],
'Amount':[10,20,30,40,50,60],
'Date_1':['1/12/2018','1/14/2018','1/12/2018','1/14/2018','2/1/2018','1/12/2018'],
'Random_data':['ax','','nan','','by','cz'],
'Count':[23,1,4,56,34,53]
})

df2 = df.groupby(['Ticker']).agg(['nunique'])

df2.reset_index()

print(df2)
Run Code Online (Sandbox Code Playgroud)

df2 仍然带有两个级别的索引。并具有所有列:Amount、Count、Date_1、ID、Random_data。

如何将其减少到一级索引?

并且只保留 ID 和 Random_data 列?

python pandas

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

像Qlik一样在Pandas中做Crosstable?

我有一个数据帧:

    df1=pd.DataFrame({
        'ID':[101,102],
        'Name':['Axel','Bob'],
        'US':['GrA','GrC'],
        'Europe':['GrB','GrD'],
        'AsiaPac':['GrZ','GrF']
     })
Run Code Online (Sandbox Code Playgroud)

我想改成这个:

    df2=pd.DataFrame({
    'ID':[101,101,101,102,102,102],
    'Name':['Axel','Axel','Axel','Bob','Bob','Bob'],
    'Region':['US','Europe','AsiaPac','US','Europe','AsiaPac'],
    'Group':['GrA','GrB','GrZ','GrC','GrD','GrF']
})
Run Code Online (Sandbox Code Playgroud)

我该怎么做?pandas中有一个交叉表功能,但它没有这样做.在Qlik,我会这样做

    Crosstable(Region,Group,2)  
    LOAD
        ID,
        Name,
        US,
        Europe,
        AsiaPac
Run Code Online (Sandbox Code Playgroud)

我会从df1到df2.我怎么能在python(熊猫或其他)中做到这一点?

python qlikview pandas qliksense

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

Pandas Dtypewarning:如何在列中找到不同单元格的dtype?

当我在pandas中导入csv文件时,我得到一个DtypeWarning:

列(3)具有混合类型.在导入时指定dtype选项或设置low_memory = False.

  1. 我如何找出每个细胞的dtype是什么?我认为数据可能存在一些问题,这就是警告即将发生的原因,但它是一个大约5百万行的文件,难以识别罪魁祸首?
  2. 在Import上指定dtype是一个好习惯吗?如果这样做了,它是否会导致数据"丢失"?

python numpy pandas

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

来自熊猫数据框的散点图上的 Matplotlib 图例

我试图在下图中获得正确的图例。它应该只是带有相应颜色的“绿色”、“蓝色”和“红色”。但它无处不在。 在此处输入图片说明

代码如下:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
        'category':['blue','green','red','blue','green','red','blue','green','red'],
        'attempts':[8955,7881,6723,100,200,300,4567,876,54],
        'success':[3000,7500,2000, 256,4567,4567,7665,543,43]
})
fig,ax = plt.subplots()
plt.scatter(df['attempts'],df['success'],c=df['category'],label=df['category'])
plt.legend(loc=2)
plt.savefig('scatter.png')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我该如何做对?(这里有一个类似的:https : //pythonspot.com/matplotlib-scatterplot/在第二部分“带组的散点图”中,但这不是基于熊猫数据框)。

python matplotlib scatter-plot pandas

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

Python Matplotlib (1) 将 x 轴标签格式设置为“年-季度”,(2) 将 Major_locator 设置为月末

我想做两件事:

  1. 我想将 x 轴格式化为四分之一。我的时间序列数据以季度为单位。例如,对于日期 2012-12-31 我希望它显示为 2012Q4,对于 2013-03-31 作为 2013Q1 ,对于 2013-03-30 作为 2013Q2 等等。我可以用
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
Run Code Online (Sandbox Code Playgroud)

设置格式。但我找不到将其设置为四分之一的方法。pandas 有 Q,(pandas 格式 datetimeindex 到quarters)但这在这里不起作用。我该怎么做呢?

  1. 我希望主要刻度定位器出现在季度末。我可以使用此代码(见下文)将其设置为每个月/季度的第 30 天,但我不知道如何将其设置为每个月/季度的最后一天,因为 6 月结束的季度于 30 日结束,而3 月份结束的季度于 31 日结束。
dayloc = mdates.MonthLocator(bymonth=(3,6,9,12),bymonthday=30)
ax.xaxis.set_major_locator(dayloc)
Run Code Online (Sandbox Code Playgroud)

生成数据和绘图的完整代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
from datetime import timedelta

from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

dti = pd.date_range('2012-12-31', periods=30, freq='Q')
s1 = pd.Series(range(30),index=dti)
s2 = pd.Series(np.random.randint(100,1000,size=(30)),index=dti)

df …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

如何基于字符串(如果存在)将列拆分为单独的列

我有一个数据帧如下:

df = pd.DataFrame({
'Event':['2018 Green Meeting','2018 Yellow Meeting','2018 Red Meeting',
'2017 Green Meeting','2017 Yellow Meeting','2017 Red Meeting',
'2016 Green Meeting','2016 Yellow Meeting','2016 Red Meeting',
'Blue Meeting','Purple Meeting','Green Meeting'],
'Count':[1,2,3,4,5,6,7,8,9,10,11,12]
})
Run Code Online (Sandbox Code Playgroud)

我想将事件列拆分为两列'Year'和'Event_Name'以获得以下输出:

df2 = pd.DataFrame({
'Year':['2018','2018','2018',
'2017','2017','2017',
'2016','2016','2016',
'Blue Meeting','Purple Meeting','Green Meeting'],
'Event_Name':['Green Meeting','Yellow Meeting','Red Meeting',
'Green Meeting','Yellow Meeting','Red Meeting',
'Green Meeting','Yellow Meeting','Red Meeting',
'Blue Meeting','Purple Meeting','Green Meeting'],
'Count':[1,2,3,4,5,6,7,8,9,10,11,12]
})
Run Code Online (Sandbox Code Playgroud)

当我尝试使用正则表达式来做这件事.它看起来似乎不起作用.我得到两列'Year'和'Event_Name'.但这一年是空的.

这就是我正在使用的:

df[['Year','Event_Name']] = df['Event'].str.split(r'\d{4}',expand=True)
Run Code Online (Sandbox Code Playgroud)

如何使其正常工作?

python regex pandas

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