如果我有这样的表格:
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分.在熊猫中做同样的事情是什么?
我对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)。但是,当我转到“设置” >>“高级” >>“内容设置” >>“位置”时
,启用了“访问前询问”选项。然后是“阻止”和“允许”部分。但是它没有给我添加本地主机的选项。如何启用它,以便可以在代码中使用地理位置并在计算机上对其进行测试?
我想获取一个 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 列?
我有一个数据帧:
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(熊猫或其他)中做到这一点?
当我在pandas中导入csv文件时,我得到一个DtypeWarning:
列(3)具有混合类型.在导入时指定dtype选项或设置low_memory = False.
我试图在下图中获得正确的图例。它应该只是带有相应颜色的“绿色”、“蓝色”和“红色”。但它无处不在。

代码如下:
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/在第二部分“带组的散点图”中,但这不是基于熊猫数据框)。
我想做两件事:
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
Run Code Online (Sandbox Code Playgroud)
设置格式。但我找不到将其设置为四分之一的方法。pandas 有 Q,(pandas 格式 datetimeindex 到quarters)但这在这里不起作用。我该怎么做呢?
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) 我有一个数据帧如下:
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)
如何使其正常工作?
pandas ×7
python ×7
matplotlib ×2
numpy ×2
qliksense ×2
qlikview ×2
geolocation ×1
html5 ×1
javascript ×1
regex ×1
scatter-plot ×1