我有一个有两列的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)
我正在使用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) 我正在尝试使用 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)
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)
以上是我的示例代码。
出于某种原因,它没有按 ^ 字符拆分列。
有什么建议吗?
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) 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吗?我想将代码用于列可以变化的场景,我想将其作为列表传递。