Skip to content

Instantly share code, notes, and snippets.

View ki-chi's full-sized avatar

Kiichi ki-chi

  • Tokyo, Japan
  • 04:38 (UTC +09:00)
View GitHub Profile
@ki-chi
ki-chi / add_if_not_found.jl
Created March 19, 2023 06:48
Juliaでパッケージがインストールされていなければインストールする
using Pkg
function add_if_not_found(packages)
installed = [dep.name for (_, dep) in Pkg.dependencies() if dep.is_direct_dep]
targets = []
for pkg in packages
pkg in installed || push!(pkg, targets)
end
isempty(targets) || Pkg.add(targets)
end
@ki-chi
ki-chi / pandas_coalesce.py
Last active September 7, 2022 11:20
coalesce function by pandas
import pandas as pd
def coalesce(df: pd.DataFrame, *args) -> pd.Series:
return df[list(args)].bfill(axis=1).iloc[:, 0]
@ki-chi
ki-chi / pandas_parquet.dockerfile
Created June 30, 2022 17:30
pd.read_parquet()の挙動の確認用
FROM python:3.10
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir pandas==1.4.3 pyarrow==8.0.0 fastparquet==0.8.1
@ki-chi
ki-chi / melt_columns.py
Created August 6, 2021 16:37
Melt hierarchal columns of pandas dataframe
def melt_columns(df: pd.DataFrame, sep: str="_") -> pd.DataFrame:
"""与えられたデータフレームの列がMultiIndexの場合にそれを非階層なIndexにして返す.
Arguments:
df (pd.DataFrame) : 列を非階層にしたいデータフレーム.
sep (str) : 新たな列名を作るときにセパレーターとして使われる文字列. デフォルトでは"_".
Return:
pd.DataFrame : 列名が非階層なIndexとなっているデータフレーム
import time
import numpy as np
import pandas as pd
def np_mode(df):
"""
与えられたDataFrameの各列から最頻値を返す
Original: https://twitter.com/nkay/status/1328231713919496194
"""
# julia> versioninfo()
# Julia Version 1.5.0
# Commit 96786e22cc (2020-08-01 23:44 UTC)
# Platform Info:
# OS: macOS (x86_64-apple-darwin18.7.0)
# CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
# WORD_SIZE: 64
# LIBM: libopenlibm
# LLVM: libLLVM-9.0.1 (ORCJIT, skylake)
@ki-chi
ki-chi / num2int.py
Created January 24, 2017 13:58
The function for converting tricky-format digits
## Convert strings of 2-digits number have the following tricky format to an integer.
## Tricky format: the last digit is described as decimal, and the first digit is chosen from {1, ..., 9, A, ..., Z, a, ..., z}.
## The min is 0(="00") and the max is 619(="z9").
## Example: "15" -> 15, "A0" -> 100, "Z9" -> 359, "a0" -> 360, "c5" -> 385
def num2int(num):
if num.isdigit():
return int(num)
elif num[0].isupper():
return int(num[0], 36) * 10 + int(num[1])
@ki-chi
ki-chi / matplotlib_hokkaido.ipynb
Created January 22, 2017 10:26
matplotlib_hokkaido.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@ki-chi
ki-chi / jsm2pandas.py
Created October 3, 2016 07:40
Convert instances of jsm into Pandas DataFrame.
import pandas as pd
import jsm
import datetime
def get_historical_price(stockcode, start_date=None, end_date=None):
q = jsm.Quotes()
if start_date is None or end_date is None:
jsm_data = q.get_historical_prices(stockcode)
else:
jsm_data = q.get_historical_prices(stockcode, jsm.DAILY, start_date, end_date, jsm.DAILY)
@ki-chi
ki-chi / cluster_coef_for_unweighted_undirected_graph.py
Last active December 12, 2015 10:21
重み無し無向グラフのクラスター係数を隣接行列から求める
# -*- coding: utf-8 -*-
from __future__ import print_function
import numpy as np
# it's for unweighted and undirected graph.
# Adjency matrix of the graph
adjency_mat = np.array([[0, 1, 1, 1, 0, 0],
[1, 0, 1, 0, 0, 1],
[1, 1, 0, 1, 1, 0],
[1, 0, 1, 0, 1, 0],