小编Sco*_*ton的帖子

向散点图添加第二个图例

有没有一种方法可以向散点图的大小与某些数据成比例的散点图添加辅助图例?

我写了下面的代码来生成散点图。散点图的颜色表示年份(取自用户定义的df),散点图的大小表示变量3(也取自df,但为原始数据):

import pandas as pd 

colors = pd.DataFrame({'1985':'red','1990':'b','1995':'k','2000':'g','2005':'m','2010':'y'}, index=[0,1,2,3,4,5])

fig = plt.figure()
ax = fig.add_subplot(111)

for i in df.keys():
    df[i].plot(kind='scatter',x='variable1',y='variable2',ax=ax,label=i,s=df[i]['variable3']/100, c=colors[i])

ax.legend(loc='upper right')
ax.set_xlabel("Variable 1")
ax.set_ylabel("Variable 2")
Run Code Online (Sandbox Code Playgroud)

此代码(包含我的数据)产生以下图形:

单身传奇人物

因此,虽然对颜色/年份进行了很好的明确定义,但分散的大小却没有。

如何添加辅助或附加图例来定义散点图的大小?

python matplotlib scatter-plot pandas

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

Pandas:如何按日期时间对组数据进行排序?

作为问题 Pandas 的扩展:按 A 列分组数据,按 B 列的现有值过滤 A我的数据现在每个值都有一个日期时间,如下所示:

2011-10-01 20:24:21
Run Code Online (Sandbox Code Playgroud)

编辑:起初数据具有正确的结构,但来自 dtype: object。我用以下方法更改了它:

dataset['Date']= pd.to_datetime(dataset['Date'])
Run Code Online (Sandbox Code Playgroud)

它是否正确?

所以目前,我有一个数据集,其结构如下所示:

_Group, Value, Date:_

A 2  **2011-10-01 20:24:21**

A 1   **2011-10-01 20:27:21**

A 3   **2011-10-01 20:25:21**

B 1   **2011-10-01 20:23:21**

B 2 **2011-10-01 20:26:21**

B 3 **2011-10-01 20:24:21**

B 3 **2011-10-01 20:25:21**
Run Code Online (Sandbox Code Playgroud)

我想根据日期时间对每个组的值进行排序。

--> 我已经检查过,数据时间的 dtype: datetime,但是当我尝试对其进行排序(升序)时,并非所有日期时间在组中都按正确的顺序排列。当我尝试只订购日期时,效果很好。

我尝试了以下代码:

  dataset.sort_values('Date').sort_index(level='Group')
Run Code Online (Sandbox Code Playgroud)

因此,日期的顺序是正确的,但有时它们与小时和秒无关。我的错误在哪里?

我很感谢任何帮助!

python datetime pandas

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

自我加入熊猫后如何获得2列之间的唯一关系?

import pandas as pd

data={'x':['A','A','B','B','C','E','F'],
      'y':['B','C','A','C','D','F','G']}
df=pd.DataFrame(data)

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

我有一个像这样的大数据框(简化为ABC):

     x    y
0    A    B
1    A    C
2    B    A
3    B    C
4    C    D
5    E    F
6    F    G
Run Code Online (Sandbox Code Playgroud)

有一些"循环",如第0行:A < - > B和第2行:B < - > A,这对我来说意味着相同的关系.

我希望得到x和y列值之间的关系,并给它们一个唯一的新id.

因此,对于此示例表,这意味着:

A = B = C = D给它一个唯一的id,即90 E = F = G给它一个唯一的id,即91

我需要的Result表应该是:

    id  value
0   90    A
1   90    B
2   90    C 
3   90    D
4   91    E
5   91    F
6   91    G
Run Code Online (Sandbox Code Playgroud)

我怎么能用熊猫来实现这个目标?非常感谢帮助!

python unique relation networkx pandas

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

Dataframe.lookup和映射组合导致列标签错误

我有一个大约为(1200,10)的大型数据帧,大部分是字符串,我必须在现有引用列说'Y'的基础上附加一个新列说'Z',其值是'A','B','C或未知(NaN或其他),因此我需要在df中选择三个对应的列之一,例如“ D”,“ E”,“ F”,或输出NaN并将此值附加为列“ Z”。我目前有以下代码:

df = pd.DataFrame({'T': {0: '.', 1: '.', 2: '.', 3: '.'}, 
                   'G': {0: '.', 1: '.', 2: '.', 3: '.'}, 
                   'D': {0: 4, 1: 1, 2: 5, 3: 3}, 
                   'E': {0: 6, 1: 2, 2: 7, 3: 2}, 
                   'F': {0: 8, 1: 3, 2: 9, 3: 1}, 
                   'K': {0: '.', 1: '.', 2: '.', 3:'.'}, 
                   'Y': {0: 'A', 1: 'B', 2: 'B', 3: np.nan}})

d = {'A': 'D', 'B': 'E', 'C': 'F'}
df['Z'] = df.lookup(df.index, …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

Airflow DAG 任务依赖性,打破长线

在气流中,我可以缩短这些任务依赖线吗?

a >> b >> c >> f >> G
a >> b >> d >> f >> G
Run Code Online (Sandbox Code Playgroud)

a >> b
b >> c
b >> d
c >> f
d >> f
f >> g
Run Code Online (Sandbox Code Playgroud)

这些是等价的吗?时间或效率有什么不同吗?询问是否使用代码格式化程序的原因是行长度成为第一种样式和更长的变量任务名称的问题。

有什么建议或建议吗?

python directed-acyclic-graphs airflow

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

在pandas条件python中设置组的值

我有一个包含以下列的数据框:

duration, cost, channel 
  2       180      TV1
  1       200      TV2
  2       300      TV3
  1       nan      TV1
  2       nan      TV2
  2       nan      TV3
  2       nan      TV1
  1       40       TV2
  1       nan      TV3
Run Code Online (Sandbox Code Playgroud)

一些成本值是nans,为了填补它们,我需要执行以下操作:

  • 按渠道分组
  • 在一个渠道内,将可用成本加总并除以*出现次数(平均值)
  • 重新分配该频道中所有行的值:
    • 如果持续时间= 1,则成本=平均值*1.5
    • 如果持续时间= 2,则成本=平均值

示例:TV2频道,我们有3个条目,其中一个条目具有空成本.所以我需要做以下事情:

average = 200+40/3 = 80
if duration = 1, cost = 80 * 1.5 = 120

duration, cost, channel 
  2       180      TV1
  1       120      TV2
  2       300      TV3
  1       nan      TV1
  2       80       TV2
  2       nan      TV3
  2       nan      TV1 …
Run Code Online (Sandbox Code Playgroud)

python group-by missing-data pandas

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

如何在pandas中使用pd.cut

任何人都可以帮我弄清楚为什么这不起作用:

ages = ['15-19','20-24','25-29','30-34','35-39','40-44','45-49','50-54','55-59','60-64','65-69','70-74','75-79','80-84']

race['age_group'] = pd.cut(race.Age,range(13,84,5),right=False, labels=ages)

race[['Age','age_group']].head(15)
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

        Age age_group
    0   31  30-34
    1   38  40-44
    2   45  45-49
    3   30  30-34
    4   45  45-49
    5   35  35-39
    6   32  30-34
    7   33  35-39
    8   29  30-34
    9   42  40-44
   10   34  35-39
   11   48  50-54
   12   35  35-39
   13   51  50-54
   14   38  40-44
Run Code Online (Sandbox Code Playgroud)

pandas

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

在熊猫中执行模糊字符串匹配的更快方法

有什么方法可以在熊猫中使用fuzzywuzzy来加速模糊字符串匹配。


我有一个数据框,extra_names它的名称我想与另一个数据框运行模糊匹配names_df

>> extra_names.head()

     not_matching
0 Vij Sales
1 Crom Electronics 
2 REL Digital
3 Bajaj Elec
4 Reliance Digi

>> len(extra_names)
6500

>> names_df.head()

         names   types
0 Vijay Sales        1
1 Croma Electronics  1
2 Reliance Digital   2
3 Bajaj Electronics  2
4 Pai Electricals    2

>> len(names_df)
250
Run Code Online (Sandbox Code Playgroud)

截至目前,我正在使用以下代码运行逻辑,但它需要永远完成。

choices = names_df['names'].unique().tolist()

def fuzzy_match(row):
    best_match = process.extractOne(row, choices)
    return best_match[0], best_match[1] if best_match else '',''

%%timeit
extra_names['best_match'], extra_names['match%'] = extra_names['not_matching'].apply(fuzzy_match)
Run Code Online (Sandbox Code Playgroud)

当我发布这个问题时,查询仍在运行。有没有办法加快这个模糊字符串匹配过程?

python fuzzy-comparison pandas fuzzywuzzy

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

读取 panda 数据帧的第一列、第二列、第 n 列到最后一列

我有一个 pandas 数据框df

中有 27 列df

我想阅读 的第 1、2、10 栏到最后几栏df。我可以做到这一点df.iloc[0,1,9,10,11,.....,26],但如果数据框有很多列,那么输入起来就太乏味了。阅读专栏的更优雅的方式是什么?

我正在使用 python v3.7

python dataframe python-3.x pandas

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

删除数据帧中字符后的所有内容

如果我有以下数据框“国家”:

  country      info
 england       london-europe
 scotland      edinburgh-europe
 china         beijing-asia
 unitedstates  washington-north_america
Run Code Online (Sandbox Code Playgroud)

我想获取信息字段,并且必须删除“-”之后的所有内容,变为:

 country      info
 england       london
 scotland      edinburgh
 china         beijing
 unitedstates  washington
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python dataframe pandas

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