Pandas-其他

多個(gè)DataFrame操作

合并

objs 是需要拼接的對(duì)象集合,一般為列表或者字典
axis=0 是行拼接,拼接之后行數(shù)增加,列數(shù)也根據(jù)join來定,join=’outer’時(shí),列數(shù)是兩表并集。同理join=’inner’,列數(shù)是兩表交集。
在默認(rèn)情況下,axis=0為縱向拼接,此時(shí)有
concat([df1,df2]) 等價(jià)于 df1.append(df2)

在axis=1 時(shí)為橫向拼接 ,此時(shí)有
concat([df1,df2],axis=1) 等價(jià)于 merge(df1,df2,left_index=True,right_index=True,how='outer')

處理數(shù)據(jù)

填充缺失值

使用一個(gè)全局常量填充缺失值:將缺失值用同一個(gè)常數(shù)(如Unknown或﹣∞)替換。如果缺失值都用Unknown替換,則挖掘程序可能誤認(rèn)為它們形成了一個(gè)有趣的概念,因?yàn)樗鼈兌季哂邢嗤闹怠癠nknown”。因此此方法雖然簡單但不可靠。

data.Cabin.fillna('unknown',inplace=True)

df_all.fillna(0, inplace=True)

使用屬性的均值填充缺失值:例如,假定顧客的平均收入為56000美元,則使用該值替換income中的缺失值。

 data.Age.fillna(data.Age.mean(),inplace=True)

新建列并賦值

frame['panduan'] = frame.city.apply(lambda x: 1 if 'ing' in x else 0)

Drop列

df1t.drop(['app'], axis=1, inplace=True)

選擇列

col_imp = ['mobile_city_code','label']
df_train = pd.DataFrame(df_train, columns=col_imp)

改列名

a.rename(columns={'A':'a', 'C':'c'}, inplace = True)

應(yīng)用

用kmeans聚類

import pandas as pd
import matplotlib.pyplot as plt
#讀取文本數(shù)據(jù)到DataFrame中,將數(shù)據(jù)轉(zhuǎn)換為matrix,保存在dataSet中
df = pd.read_table('d:/22.txt')
dataSet = df.as_matrix(columns=None)
# n_clusters=4,參數(shù)設(shè)置需要的分類這里設(shè)置成4類
kmeans = KMeans(n_clusters=4, random_state=0).fit(dataSet)
#center為各類的聚類中心,保存在df_center的DataFrame中給數(shù)據(jù)加上標(biāo)簽
center = kmeans.cluster_centers_
df_center = pd.DataFrame(center, columns=['x', 'y'])
#標(biāo)注每個(gè)點(diǎn)的聚類結(jié)果
labels = kmeans.labels_
#將原始數(shù)據(jù)中的索引設(shè)置成得到的數(shù)據(jù)類別,根據(jù)索引提取各類數(shù)據(jù)并保存
df = pd.DataFrame(dataSet, index=labels, columns=['x', 'y'])
df1 = df[df.index==0]
df2 = df[df.index==1]
df3 = df[df.index==2]
df4 = df[df.index==3]
#繪圖
plt.figure(figsize=(10,8), dpi=80)
axes = plt.subplot()
#s表示點(diǎn)大小,c表示color,marker表示點(diǎn)類型,DataFrame數(shù)據(jù)列引用參考博客其他文章
type1 = axes.scatter(df1.loc[:,['x']], df1.loc[:,['y']], s=50, c='red', marker='d')
type2 = axes.scatter(df2.loc[:,['x']], df2.loc[:,['y']], s=50, c='green', marker='*')
type3 = axes.scatter(df3.loc[:,['x']], df3.loc[:,['y']], s=50, c='brown', marker='p')
type4 = axes.scatter(df4.loc[:,['x']], df4.loc[:,['y']], s=50, c='black')
#顯示聚類中心數(shù)據(jù)點(diǎn)
type_center = axes.scatter(df_center.loc[:,'x'], df_center.loc[:,'y'], s=40, c='blue')
plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)
axes.legend((type1, type2, type3, type4, type_center), ('0','1','2','3','center'), loc=1)
plt.show()

轉(zhuǎn)ndarray

https://blog.csdn.net/flyfrommath/article/details/69388675

onehot后轉(zhuǎn)dataframe

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
sns.set()

%matplotlib inline

#Iris Plot
iris = load_iris()
n_samples, m_features = iris.data.shape

#Load Data
X, y = iris.data, iris.target
D_target_dummy = dict(zip(np.arange(iris.target_names.shape[0]), iris.target_names))

DF_data = pd.DataFrame(X,columns=iris.feature_names)
DF_data["target"] = pd.Series(y).map(D_target_dummy)
#sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
#0                  5.1               3.5                1.4               0.2   
#1                  4.9               3.0                1.4               0.2   
#2                  4.7               3.2                1.3               0.2   
#3                  4.6               3.1                1.5               0.2   
#4                  5.0               3.6                1.4               0.2   
#5                  5.4               3.9                1.7               0.4   

DF_dummies = pd.get_dummies(DF_data["target"])
#setosa  versicolor  virginica
#0         1           0          0
#1         1           0          0
#2         1           0          0
#3         1           0          0
#4         1           0          0
#5         1           0          0

from sklearn.preprocessing import OneHotEncoder, LabelEncoder
def f1(DF_data):
    Enc_ohe, Enc_label = OneHotEncoder(), LabelEncoder()
    DF_data["Dummies"] = Enc_label.fit_transform(DF_data["target"])
    DF_dummies2 = pd.DataFrame(Enc_ohe.fit_transform(DF_data[["Dummies"]]).todense(), columns = Enc_label.classes_)
    return(DF_dummies2)

%timeit pd.get_dummies(DF_data["target"])
#1000 loops, best of 3: 777 μs per loop

%timeit f1(DF_data)
#100 loops, best of 3: 2.91 ms per loop
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容