Code Snippets
programming
Python
Code Snippets
hex string to int
int('000000007fff4070', base=16)
Matplotlib
List all fonts
def all_fonts():
return set([f.name for f in mpl.font_manager.fontManager.ttflist])Three-dimensional surface plot
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import LightSource
fig = plt.figure()
ax = fig.gca(projection='3d')
# Test data: Matlab `peaks()`
x, y = np.mgrid[-3:3:150j,-3:3:150j]
z = 3*(1 - x)**2 * np.exp(-x**2 - (y + 1)**2) \
- 10*(x/5 - x**3 - y**5)*np.exp(-x**2 - y**2) \
- 1./3*np.exp(-(x + 1)**2 - y**2)
# create light source object.
ls = LightSource(azdeg=0, altdeg=65)
# shade data, creating an rgb array.
rgb = ls.shade(z, plt.cm.RdYlBu)
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, linewidth=0,
antialiased=False, facecolors=rgb)Pandas
apply expanding output
Use `result_type` argument to `apply`.
result_type : {'expand', 'reduce', 'broadcast', None}, default None
These only act when ``axis=1`` (columns):
* 'expand' : list-like results will be turned into columns.
* 'reduce' : returns a Series if possible rather than expanding
list-like results. This is the opposite of 'expand'.
* 'broadcast' : results will be broadcast to the original shape
of the DataFrame, the original index and columns will be
retained.
The default behaviour (None) depends on the return value of the
applied function: list-like results will be returned as a Series
of those. However if the apply function returns a Series these
are expanded to columns.
Named functions and columns in agg
df = test_df()
df['D'] = np.random.choice(list('ABCDE'), len(df))
# name=(col, func)
df.groupby('D').agg(min_A=('A', np.min), one=('B', lambda x : 1))
# col: ((name, func), ...)
df.groupby('D').agg({'A':[['AMean', np.mean], ['ASum', np.sum]],
'B':[['BMean', np.mean], ['BMin', np.min]]})You an also do this:
import pandas as pd
# Sample data
data = {
'payee': ['Payee1', 'Payee1', 'Payee2', 'Payee2', 'Payee3', 'Payee2'],
'account': ['Account1', 'Account1', 'Account2', 'Account3', 'Account1', 'Account2']
}
df = pd.DataFrame(data)
# Group by 'payee', then aggregate
result = df.groupby('payee')['account'].agg(
Occurrences='count',
ModeAccount=lambda x: x.mode()[0],
ModeCount=lambda x: (x == x.mode()[0]).sum()
).reset_index()
print(result)WSL
- Access WSL files from Windows:
\\wsl$ - Access Windows files from WSL:
/mnt/c/ - Usually looking for
\\wsl$\Ubuntu\home\steve\.ipython\profile_default\startup