小编Dan*_*ty2的帖子

组内的熊猫数量行

给出以下数据框:

import pandas as pd
import numpy as np
df=pd.DataFrame({'A':['A','A','A','B','B','B'],
                'B':['a','a','b','a','a','a'],
                })
df

    A   B
0   A   a 
1   A   a 
2   A   b 
3   B   a 
4   B   a 
5   B   a
Run Code Online (Sandbox Code Playgroud)

我想创建列'C',它在A和B列中对每组内的行进行编号,如下所示:

    A   B   C
0   A   a   1
1   A   a   2
2   A   b   1
3   B   a   1
4   B   a   2
5   B   a   3
Run Code Online (Sandbox Code Playgroud)

到目前为止我试过这个:

df['C']=df.groupby(['A','B'])['B'].transform('rank')
Run Code Online (Sandbox Code Playgroud)

......但没有骰子!提前致谢!

group-by rank python-3.x pandas

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

在Seaborn隐藏轴标题

鉴于以下热图,我将如何删除轴标题('月'和'年')?

import seaborn as sns

# Load the example flights dataset and conver to long-form
flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")

# Draw a heatmap with the numeric values in each cell
sns.heatmap(flights, annot=True, fmt="d", linewidths=.5)
Run Code Online (Sandbox Code Playgroud)

当前图表

python-3.x seaborn

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

GeoPandas标签多边形

鉴于此处提供的形状文件:我想在地图中标记每个多边形(县).这可能与GeoPandas有关吗?

import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline

shpfile=<Path to unzipped .shp file referenced and linked above>
c=gpd.read_file(shpfile)
c=c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075','26125','26163','26099','26115','26065'])]
c.plot()
Run Code Online (Sandbox Code Playgroud)

提前致谢!

matplotlib python-3.x geopandas

17
推荐指数
2
解决办法
7812
查看次数

Seaborn Heatmap关键词

我无法找到有关seaborn热图的任何关键词的任何文件annot_kwscbar_kws.

有一个秘密的地方我可以找到这样的东西吗?

python python-3.x seaborn

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

Python循环:列表索引超出范围

鉴于以下列表

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

我想创建一个新列表b,其中包含对当前值和下一个值a求和的元素.它将包含少于1的元素a.

像这样:

b = [1, 3, 5]
Run Code Online (Sandbox Code Playgroud)

(从0 + 1,1 + 2和2 + 3)

这是我尝试过的:

b = []
for i in a:
   b.append(a[i + 1] - a[i])
b
Run Code Online (Sandbox Code Playgroud)

问题是我一直收到这个错误:

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

我很确定它会发生,因为当我得到(3)的最后一个元素时,我无法将它添加到任何东西,因为这样做超出了它的值(3之后没有值添加).因此,我需要告诉代码停止在2,同时仍然参考3进行计算.

python loops list python-3.x

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

Pandas pivot table百分比计算

给定以下数据框和数据透视表:

import pandas as pd
df=pd.DataFrame({'A':['x','y','z','x','y','z'],
                 'B':['one','one','one','two','two','two'],
                 'C':[2,18,2,8,2,18]})
df

    A   B       C
0   x   one     2
1   y   one     18
2   z   one     2
3   x   two     8
4   y   two     2
5   z   two     18

table = pd.pivot_table(df, index=['A', 'B'],aggfunc=np.sum)

            C
A   B   
x   one     2
    two     8
y   one     18
    two     2
z   one     2
    two     18
Run Code Online (Sandbox Code Playgroud)

我想在此数据透视表中添加2列; 一个显示所有值的百分比,另一个显示列A中的百分比,如下所示:

           C    % of Total  % of B
A   B
x   one    2    4%          10%
    two   18    36%         90%
y …
Run Code Online (Sandbox Code Playgroud)

pivot-table percentage python-3.x pandas

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

GeoPandas在点上设置CRS

给定以下GeoDataFrame:

h=pd.DataFrame({'zip':[19152,19047],
               'Lat':[40.058841,40.202162],
               'Lon':[-75.042164,-74.924594]})
crs='none'
geometry = [Point(xy) for xy in zip(h.Lon, h.Lat)]
hg = GeoDataFrame(h, crs=crs, geometry=geometry)
hg

       Lat          Lon     zip     geometry
0   40.058841   -75.042164  19152   POINT (-75.042164 40.058841)
1   40.202162   -74.924594  19047   POINT (-74.924594 40.202162)
Run Code Online (Sandbox Code Playgroud)

我需要像使用另一个GeoDataFrame一样设置CRS(像这样):

c=c.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
Run Code Online (Sandbox Code Playgroud)

我试过这个:

crs={'init': 'epsg:3857'}
Run Code Online (Sandbox Code Playgroud)

还有这个:

hg=hg.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
Run Code Online (Sandbox Code Playgroud)

......但没有运气.

一些重要的说明:

  1. 上面.to_crs方法工作的另一个GeoDataFrame来自一个形状文件,几何列是多边形而不是点.在应用.to_crs方法后,其"几何"值看起来像这样:

    POLYGON((-5973.005380655156 3399.646267693398 ...当我用hg GeoDataFrame尝试上面的内容时,它们仍然看起来像常规的纬度/经度坐标.

  2. 如果/当这个结果出来时,我会用多边形GeoDataFrame连接这些点,以便绘制两个(多边形顶部的点).

  3. 当我在使用.to_crs方法之前首先尝试连接GeoDataFrames,然后我一次在点和多边形行上使用该方法时,我收到以下错误:

    ValueError:无法转换朴素几何.请先在对象上设置crs.

提前致谢!

python-3.x geopandas

9
推荐指数
2
解决办法
8607
查看次数

Seaborn Heatmap Colorbar标签为百分比

鉴于此热图:

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
Run Code Online (Sandbox Code Playgroud)

我如何才能以百分比格式显示颜色条值?另外,如果我只是想在彩条上显示第一个和最后一个值,该怎么办?

提前致谢!

heatmap python-3.x seaborn

8
推荐指数
4
解决办法
9371
查看次数

MatPlotLib美元符号与数千逗号勾选标签

鉴于以下条形图:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'A': ['A', 'B'], 'B': [1000,2000]})

fig, ax = plt.subplots(1, 1, figsize=(2, 2))

df.plot(kind='bar', x='A', y='B',
        align='center', width=.5, edgecolor='none', 
        color='grey', ax=ax)
plt.xticks(rotation=25)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想将y-tick标签显示为数千美元,如下所示:

$ 2,000个

我知道我可以用它来添加一个美元符号:

import matplotlib.ticker as mtick
fmt = '$%.0f'
tick = mtick.FormatStrFormatter(fmt)
ax.yaxis.set_major_formatter(tick)
Run Code Online (Sandbox Code Playgroud)

...这是为了添加一个逗号:

ax.get_yaxis().set_major_formatter(
     mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
Run Code Online (Sandbox Code Playgroud)

......但是如何同时获得两者?

提前致谢!

matplotlib comma dollar-sign python-3.x display

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

pandas结合Excel电子表格

我有一个包含许多选项卡的Excel工作簿.每个选项卡与其他选项卡具有相同的标头集.我想将每个选项卡中的所有数据合并到一个数据框中(不重复每个选项卡的标题).

到目前为止,我已经尝试过:

import pandas as pd
xl = pd.ExcelFile('file.xlsx')
df = xl.parse()
Run Code Online (Sandbox Code Playgroud)

可以使用某些东西来表示"所有电子表格"的解析参数吗?或者这是错误的方法?

提前致谢!

更新:我试过:

a=xl.sheet_names
b = pd.DataFrame()
for i in a:
    b.append(xl.parse(i))
b
Run Code Online (Sandbox Code Playgroud)

但它不是"有效".

python excel

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