chcę coś takiego:
x = pd.Series(["a", "b", "c", "a", "b", "a"])
for idx in level(x):
print (idx)
rezultat:
chcę coś takiego:
x = pd.Series(["a", "b", "c", "a", "b", "a"])
for idx in level(x):
print (idx)
rezultat:
Zmapuj sobie literę na cyfrę i ju ;p
Da się prościej?
x = pd.Series(["a", "b", "c", "a", "b", "a"])
x_mapped = x.apply(lambda i: [i for i, k in enumerate(x.unique()== i) if k][0])
for i in x_mapped:
print(i)
w R bym to zrobił tak:
x <- c("a", "b", "c", "a", "b", "a")
lapply(level(factor(x)), cat)
całość problemu:
# Show correlation between sepal_lenth and petal_width with size of sepal_width by classon plot
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
def load_iris():
iris = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data")
iris.columns = ["sepal_length", "sepal_width", "petal_length", "petal_width", "classs"]
return iris
def _map_factor_level(x):
return x.apply(lambda i: [i for i, k in enumerate(x.unique()== i) if k][0])
def plot_iris_correlations(iris):
fig, ax = plt.subplots()
colormap = cm.Accent
colorlist = [colormap(i) for i in _map_factor_level(iris.classs)]
ax.scatter(iris.sepal_length, iris.petal_length, s=iris.sepal_width*10, c=colorlist)
plt.show()
def main():
iris = load_iris()
plot_iris_correlations(iris)
main()
print [ord(x) - 96 for char in raw_input('Write Text: ').lower()] - coś takiego też powinno pyknąć.
Julian_ napisał(a):
Da się prościej?
Da się. Spróbuj tak:
x.map({v:i+1 for i,v in enumerate(x[~x.duplicated()].values)})
Jest jeszcze krótsza metoda:
num, _ = pd.factorize(x)
for n in num:
print(n)