小编Dan*_*ty2的帖子

Seaborn 热图:自定义标签

给出下面的热图:

flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax = sns.heatmap(flights, annot=True, fmt="d")

for text in ax.texts:
    text.set_size(14)
    if text.get_text() == '118':
        text.set_size(18)
        text.set_weight('bold')
        text.set_style('italic')
Run Code Online (Sandbox Code Playgroud)

如何将类似的逻辑应用于 y 轴刻度标签?例如,如果我想加粗“February”,将其设为 13 号字体,并将其涂成红色,该怎么办?

提前致谢!

python python-3.x seaborn

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

Pandas 根据另一列分配一列的值

给定以下数据框:

import pandas as pd
df = pd.DataFrame(
        {'A':[10,20,30,40,50,60],
         'B':[1,2,1,4,5,4]
        })
df

    A   B
0   10  1
1   20  2
2   30  1
3   40  4
4   50  5
5   60  4
Run Code Online (Sandbox Code Playgroud)

我希望新列“C”的值等于“A”中的值,其中“B”的相应值小于 3,否则为 0。所需的结果如下:

    A   B  C
0   10  1  10
1   20  2  20
2   30  1  30
3   40  4  0
4   50  5  0
5   60  4  0
Run Code Online (Sandbox Code Playgroud)

提前致谢!

python-3.x pandas

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

Matplotlib 表格行标签字体颜色和大小

鉴于下表:

import matplotlib.pyplot as plt
table=plt.table(cellText=[' ', ' ', ' ', ' ', ' '], # rows of data values
          rowLabels=['1','2','3','4','5'],
          cellLoc="left",
          rowLoc='left',
          bbox=[0,0,.2,1], # [left,bottom,width,height]
          edges="")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想将数字 (1-5) 的颜色更改为灰色,将字体大小更改为 12 磅。

python matplotlib python-3.x

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

基于另一个元素的一个列表中的Python重复元素

鉴于以下列表:

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

我想用[b]中相应位置的数字重复[a]的每个元素来产生这个:

[0, 5, 5, 1]
Run Code Online (Sandbox Code Playgroud)

即0发生1次,5发生2次,1发生1次.

python repeat python-3.x

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

熊猫标签重复

给出以下数据框:

import pandas as pd
d=pd.DataFrame({'label':[1,2,2,2,3,4,4],
               'values':[3,5,7,2,5,8,3]})
d
    label   values
0     1       3
1     2       5
2     2       7
3     2       2
4     3       5
5     4       8
6     4       3
Run Code Online (Sandbox Code Playgroud)

我知道如何计算这样的唯一值:

d['dup']=d.groupby('label')['label'].transform('count')
Run Code Online (Sandbox Code Playgroud)

结果如下:

    label   values  dup
0     1     3       1
1     2     5       3
2     2     7       3
3     2     2       3
4     3     5       1
5     4     8       2
6     4     3       2
Run Code Online (Sandbox Code Playgroud)

但我想要的是一个具有以下值的列: 1如果1 unique每个标签列都有行,2如果有,并且有duplicates问题的行是first这样0的行,并且该行是duplicate …

unique duplicates conditional-statements python-3.x pandas

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

Matplotlib显示美元符号刻度线标签(字符串)

我无法弄清楚如何在刻度标签中显示美元符号,这些标签不是数字,而是字符串.

这是我的意思的一个例子:

import matplotlib.pyplot as plt
import numpy as np

categories = ['$0-$10','$10-$20','$20-$30']
y_pos = np.arange(len(categories))
data = 3 + 10 * np.random.rand(len(categories))

plt.barh(y_pos, data, align='center', alpha=0.4)
plt.yticks(y_pos, categories)

plt.show()
Run Code Online (Sandbox Code Playgroud)

产量:

在此输入图像描述

我试过这个,它有数千美元:

fmt = '${x:,.0f}'
tick = mtick.StrMethodFormatter(fmt)
plt.yaxis.set_major_formatter(tick) 
Run Code Online (Sandbox Code Playgroud)

...但没有像我这里的字符串那样的运气.

python format matplotlib labels dollar-sign

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

Pandas比较类似的DataFrames并得到Min

给出以下数据框架:

d1=pd.DataFrame({'A':[1,2,np.nan],'B':[np.nan,5,6]})
d1.index=['A','B','E']

    A       B
A   1.0     NaN
B   2.0     5.0
E   NaN     6.0

d2=pd.DataFrame({'A':[4,2,np.nan,4],'B':[4,2,np.nan,4]})
d2.index=['A','B','C','D']
    A       B
A   4.0     4.0
B   2.0     2.0
C   NaN     NaN
D   4.0     4.0
Run Code Online (Sandbox Code Playgroud)

我想比较它们以找到每个相应行中的最低值,同时保留两个行中的所有行索引.这是我正在寻找的结果:

    A       B
A   1.0     4.0
B   2.0     2.0
C   NaN     NaN
D   4.0     4.0
E   NaN     6.0
Run Code Online (Sandbox Code Playgroud)

提前致谢!

python compare min dataframe pandas

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

Pandas 用列名替换 Null

给定以下数据框: import pandas as pd

d = pd.DataFrame({'a':[1,2,3],'b':[np.nan,5,6]})
d
    a   b
0   1   NaN
1   2   5.0
2   3   6.0
Run Code Online (Sandbox Code Playgroud)

对于值为“NaN”的任何列,我想用列名替换该值。我的真实数据有很多列。

想要的结果:

    a   b
0   1   b
1   2   5.0
2   3   6.0
Run Code Online (Sandbox Code Playgroud)

提前致谢!

python pandas

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

熊猫和SQL炼金术:指定列数据类型

更新:

我在这里看到了一些指导,但是当我使用下面的代码将熊猫中的数据插入Oracle时,我似乎无法弄清楚如何指定列类型。例如,一列是日期,但是在导入时,它会转换为字符串。

另外,如果我希望Oracle数据库中的列名稍有不同,是否需要先通过pandas重命名列,然后通过to_sql将其发送给Oracle?

import pandas as pd
from sqlalchemy import create_engine
import cx_Oracle as cx
pwd=input('Enter Password for server:')
engine = create_engine('oracle+cx_oracle://schema:'+pwd+'@server:1521/service_name')
df=pd.read_csv(r'path\data.csv',encoding='latin-1',index_col=0)
name='table1'
df.to_sql(name,engine,if_exists='append')
Run Code Online (Sandbox Code Playgroud)

oracle sqlalchemy python-3.x pandas

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

Pandas 通过 SQL Alchemy 到 Oracle:UnicodeEncodeError:'ascii' 编解码器无法编码字符

使用熊猫 18.1...

我正在尝试遍历 CSV 文件夹来读取每个 CSV 并将其发送到 Oracle 数据库表。我的众多 CSV 之一中潜伏着一个非 ASCII 字符(更像是陶醉在我的痛苦中)。我不断收到此错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\xab' in position 8: 
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

这是代码:

import pandas as pd
import pandas.io.sql as psql
from sqlalchemy import create_engine
import cx_Oracle as cx

engine = create_engine('oracle+cx_oracle://schema:'+pwd+'@server:port/service_name'
,encoding='latin1')

name='table'
path=r'path_to_folder'
filelist = os.listdir(path) 

for file in filelist:
    df = pd.read_csv(pathc+'\\'+file,encoding='latin1',index_col=0)
    df=df.astype('unicode')
    df['date'] = pd.to_datetime(df['date'])
    df['date'] = pd.to_datetime(df['Contract_EffDt'],format='%YYYY-%mm-%dd')
    df.to_sql(name, engine, if_exists = 'append')
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

  1. coding=utf-8 (在引擎中,如果我在 read_csv 中这样做,它会抛出错误)
  2. 在引擎中的“service_name”后面添加 ?encoding=utf8
  3. 使用 …

oracle sqlalchemy python-3.x

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