ITの隊長のブログ

ITの隊長のブログです。Pythonを使って仕事しています。最近は機械学習をさわりはじめたお(^ω^ = ^ω^)

seaborn.pairplotで左と下にでてくるlabelのrotationを変更したい

とてもめんどかった(探索が)。ドキュメントを探してたらmatplotlibのようなクラスを扱えることを知りできた。

_x_columns =['width', 'height']
g = sns.pairplot(df[_x_columns], height=8, corner=True, hue='sex')

for ax in g.axes.flat:
    if ax is None:
        continue

    ax.set_xlabel(ax.get_xlabel(), rotation=90)  # 下側のラベル
    ax.set_ylabel(ax.get_ylabel(), rotation=0)  # 左側のラベル

fadeInとfadeOutを実装して死んだ

ウンコード

export function fade(node, duration, _type) {
    // style属性にdisplay: noneが設定されていたとき
    console.log(node.style.display);
    if (node.style.display === 'none') {
      node.style.display = 'none';
    } else {
      node.style.display = 'block';
    }
    node.style.opacity = 0;
    if (_type === 'out') {
      node.style.opacity = 1;
    }
  
    var start = performance.now();
    let tick = function(timestamp) {
      // イージング計算式(linear)
      var easing = (timestamp - start) / duration;
      if (_type === 'out') {
        easing = 1 - easing;
      }
  
      // opacityが1を超えないように
      console.log(node.style.opacity);
      if (_type === 'in') {
        node.style.opacity = Math.min(easing, 1);
      } else {
        node.style.opacity = Math.max(easing, 0);
      }
  
      if (_type === 'in') {
        // opacityが1より小さいとき
        if (easing < 1) {
          requestAnimationFrame(tick);
          node.style.display = 'block';
        } else {
          node.style.opacity = '';
        }
      } else {
        if (easing > 0) {
          requestAnimationFrame(tick);
        } else {
          node.style.opacity = '';
          node.style.display = 'none';
        }
      }
    }
    requestAnimationFrame(tick);
  }

jQueryなら4行ぐらいでおわりなのに....

PySparkの雑メモ

PySparkで使い方に困ったときのメモ

複数カラムで集計

from pyspark.sql import functions as F


a1 = df.groupby('column_1', 'column_2').agg(F.count(F.col('column_3')).alias('count'),
    F.collect_set('column_4').alias('collect_column_4'))

複数カラムでorderby

from pyspark.sql import functions as F


a1 = df.select('column_1', 'column_2', 'column_3') \
   .groupby('column_1', 'column_2') \
   .agg(F.collect_set('column_3').alias("collect_column_3")) \
   .orderBy(['column_1', 'column_2'], ascending=False) \

正規表現で置換

from pyspark.sql import functions as F


a1 = df.withColumn('ip_mask_16', F.regexp_replace(F.col('ip'), '^(\\d+?\.+\\d+?\.).+', '$1'))

BulmaをWebpackで動かすまでをメモ

Q.Bulmaってなんのブルマですか? → A.DBのブルマだそうです。

bulma.io

これです。

webpack全然覚えていないのですが、jsをトランスパイルしたいので、ついでhtmlやcssもwebpackでやろう→cssフレームワーク使いたい。おおええよ!ってなったけど死んだ。

qiita.com

記事が少ないお. gulp使いたい.

Bulmaをwebpackから読み出せるようにする

$ npm install webpack@^4.16.0 -g
$ npm install webpack-cli@^3.0.8 -g
$ npm install babel-jest @babel/core babel-core@^7.0.0-bridge.0 @babel/preset-env babel-loader@7 copy-webpack-plugin html-webpack-plugin --save
$ npm install bulma@^0.7.2 --save
$ npm install css-loader@^1.0.0 --save
$ npm install extract-text-webpack-plugin@^4.0.0-beta.0 --save
$ npm install mini-css-extract-plugin --save
$ npm install node-sass@^4.9.2 --save
$ npm install sass-loader@^7.0.3 --save
$ npm install style-loader@^0.21.0 --save

これをinstallしておけばあとは公式チュートリアルの通りに進めば動きます。

実は公式チュートリアルをそのまま実施すれば動くんだけど、別途他モジュール(ejsなど)をトランスパイルできるように設定すると何故かpluginが動作しなくなるので、こんな感じになりました。メモ。