小编Tro*_*ump的帖子

Seaborn Bar Plot Ordering

我有一个有两列的pandas数据框.

我需要"计数"列所订购的情节.

dicti=({'37':99943,'25':47228,'36':16933,'40':14996,'35':11791,'34':8030,'24' : 6319 ,'2'  :5055 ,'39' :4758 ,'38' :4611  })
pd_df = pd.DataFrame(list(dicti.iteritems()))
pd_df.columns =["Dim","Count"]
plt.figure(figsize=(12,8))
ax = sns.barplot(x="Dim", y= "Count",data=pd_df )
ax.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "
{:,}".format(int(x))))
ax.set(xlabel="Dim", ylabel='Count')
for item in ax.get_xticklabels():
    item.set_rotation(90)
for i, v in enumerate(pd_df["Count"].iteritems()):        
    ax.text(i ,v[1], "{:,}".format(v[1]), color='m', va ='bottom', 
    rotation=45)
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)

现在情节按"Dim"栏排序,我需要按"计数"栏排序,我该怎么做?在此输入图像描述

python matplotlib pandas seaborn

12
推荐指数
4
解决办法
3万
查看次数

Seaborn在一个循环中绘制

我正在使用Spyder并在一个循环中绘制Seaborn计数图.问题是这些图似乎是在同一个对象中相互重叠的,我最终只看到了该图的最后一个实例.如何在控制台中一个接一个地查看每个图?

for col in df.columns:
   if  ((df[col].dtype == np.float64) | (df[col].dtype == np.int64)):
       i=0
       #Later
   else :
       print(col +' count plot \n') 
       sns.countplot(x =col, data =df)
       sns.plt.title(col +' count plot')        
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

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

在 PySpark 数据帧聚合中计数包括空值

我正在尝试使用 agg 和 count 对 DataFrame 进行计数。

from pyspark.sql import Row ,functions as F
row = Row("Cat","Date")
df = (sc.parallelize
  ([
        row("A",'2017-03-03'),
        row('A',None),
        row('B','2017-03-04'),
        row('B','Garbage'),
        row('A','2016-03-04')
]).toDF())
df = df.withColumn("Casted", df['Date'].cast('date'))
df.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

(
df.groupby(df['Cat'])
.agg
(
    #F.count(col('Date').isNull() | col('Date').isNotNull()).alias('Date_Count'),
    F.count('Date').alias('Date_Count'),
    F.count('Casted').alias('Valid_Date_Count')
)    
.show()
Run Code Online (Sandbox Code Playgroud)

)

样本

函数 F.count() 只给我非空计数。除了使用“OR”条件之外,有没有办法获得包括空值的计数。

无效计数似乎不起作用。& 条件看起来不像预期的那样工作。

(
 df
 .groupby(df['Cat'])
.agg
 (
  F.count('*').alias('count'),    
  F.count('Date').alias('Date_Count'),
  F.count('Casted').alias('Valid_Date_Count'),
  F.count(col('Date').isNotNull() & col('Casted').isNull()).alias('invalid')
 )    
.show()
)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

dataframe pyspark

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

Pyspark 拆分列

from pyspark.sql import Row, functions as F
row = Row("UK_1","UK_2","Date","Cat",'Combined')
agg = ''
agg = 'Cat'
tdf = (sc.parallelize
    ([
        row(1,1,'12/10/2016',"A",'Water^World'),
        row(1,2,None,'A','Sea^Born'),
        row(2,1,'14/10/2016','B','Germ^Any'),
        row(3,3,'!~2016/2/276','B','Fin^Land'),
        row(None,1,'26/09/2016','A','South^Korea'),
        row(1,1,'12/10/2016',"A",'North^America'),
        row(1,2,None,'A','South^America'),
        row(2,1,'14/10/2016','B','New^Zealand'),
        row(None,None,'!~2016/2/276','B','South^Africa'),
        row(None,1,'26/09/2016','A','Saudi^Arabia')
        ]).toDF())
cols = F.split(tdf['Combined'], '^')
tdf = tdf.withColumn('column1', cols.getItem(0))
tdf = tdf.withColumn('column2', cols.getItem(1))
tdf.show(truncate = False  )
Run Code Online (Sandbox Code Playgroud)

以上是我的示例代码。

出于某种原因,它没有按 ^ 字符拆分列。

有什么建议吗?

pyspark

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

PySpark 中通过 JDBC 的 SQL Server

os.environ.get("PYSPARK_SUBMIT_ARGS", "--master yarn-client --conf spark.yarn.executor.memoryOverhead=6144 \
        --executor-memory 1G –jars  /mssql/jre8/sqljdbc42.jar --driver-class-path  /mssql/jre8/sqljdbc42.jar")

source_df = sqlContext.read.format('jdbc').options(
          url='dbc:sqlserver://xxxx.xxxxx.com',
          database = "mydbname",
          dbtable=mytable,
          user=username,
          password=pwd,
          driver='com.microsoft.jdbc.sqlserver.SQLServerDriver'
          ).load()
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Spark 上下文加载 SQL Server 表。

但是遇到以下错误。

Py4JJavaError: An error occurred while calling o59.load.
: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Run Code Online (Sandbox Code Playgroud)

我在该位置有 jar 文件。那是正确的jar文件吗?是不是代码有问题。

不知道是什么问题。

斯卡拉错误

scala> classOf[com.microsoft.sqlserver.jdbc.SQLServerDriver]
<console>:27: error: object sqlserver is not a member of package com.microsoft
              classOf[com.microsoft.sqlserver.jdbc.SQLServerDriver]


scala> classOf[com.microsoft.jdbc.sqlserver.SQLServerDriver]
<console>:27: error: object jdbc is not a member of package com.microsoft
              classOf[com.microsoft.jdbc.sqlserver.SQLServerDriver]
Run Code Online (Sandbox Code Playgroud)

sql-server jdbc pyspark

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

通过传递列表来配置Concat数据框列

    from pyspark.sql import Row, functions as F
    row = Row("UK_1","UK_2","Date","Cat")
    df = (sc.parallelize
    ([
        row(1,1,'12/10/2016',"A"),
        row(1,2,None,'A'),
        row(2,1,'14/10/2016','B'),
        row(3,3,'!~2016/2/276','B'),
        row(None,1,'26/09/2016','A'),
        row(1,1,'12/10/2016',"A"),
        row(1,2,None,'A'),
        row(2,1,'14/10/2016','B'),
        row(None,None,'!~2016/2/276','B'),
        row(None,1,'26/09/2016','A')
        ]).toDF())

       pks = ["UK_1","UK_2"]

      df1 = (
      df
      .select(columns) 
       #.withColumn('pk',F.concat(pks))
      .withColumn('pk',F.concat("UK_1","UK_2"))
      )

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

有什么方法可以将列列表传递给concat吗?我想将代码用于列可以变化的场景,我想将其作为列表传递。

dataframe pyspark

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

标签 统计

pyspark ×4

dataframe ×2

matplotlib ×2

pandas ×2

python ×2

seaborn ×2

jdbc ×1

sql-server ×1