美文网首页
Pandas-其他

Pandas-其他

作者: davidic | 来源:发表于2019-02-13 17:13 被阅读0次

多个DataFrame操作

合并

objs 是需要拼接的对象集合,一般为列表或者字典
axis=0 是行拼接,拼接之后行数增加,列数也根据join来定,join=’outer’时,列数是两表并集。同理join=’inner’,列数是两表交集。
在默认情况下,axis=0为纵向拼接,此时有
concat([df1,df2]) 等价于 df1.append(df2)

在axis=1 时为横向拼接 ,此时有
concat([df1,df2],axis=1) 等价于 merge(df1,df2,left_index=True,right_index=True,how='outer')

处理数据

填充缺失值

使用一个全局常量填充缺失值:将缺失值用同一个常数(如Unknown或﹣∞)替换。如果缺失值都用Unknown替换,则挖掘程序可能误认为它们形成了一个有趣的概念,因为它们都具有相同的值“Unknown”。因此此方法虽然简单但不可靠。

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)

应用

用kmeans聚类

import pandas as pd
import matplotlib.pyplot as plt
#读取文本数据到DataFrame中,将数据转换为matrix,保存在dataSet中
df = pd.read_table('d:/22.txt')
dataSet = df.as_matrix(columns=None)
# n_clusters=4,参数设置需要的分类这里设置成4类
kmeans = KMeans(n_clusters=4, random_state=0).fit(dataSet)
#center为各类的聚类中心,保存在df_center的DataFrame中给数据加上标签
center = kmeans.cluster_centers_
df_center = pd.DataFrame(center, columns=['x', 'y'])
#标注每个点的聚类结果
labels = kmeans.labels_
#将原始数据中的索引设置成得到的数据类别,根据索引提取各类数据并保存
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表示点大小,c表示color,marker表示点类型,DataFrame数据列引用参考博客其他文章
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')
#显示聚类中心数据点
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()

转ndarray

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

onehot后转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

相关文章

  • Pandas-其他

    多个DataFrame操作 合并 处理数据 填充缺失值 使用一个全局常量填充缺失值:将缺失值用同一个常数(如Unk...

  • pandas-基础笔记

    Pandas学习笔记-基础篇 参考资料 https://www.yiibai.com/pandas/ 导入模块 S...

  • Pandas-筛选数据

    筛选数据 转置 遍历 traj_plot.py 排序 通过列名来排序 通过某一列的数值排序 选择 series选择...

  • Pandas-创建数据

    创建数据 随机数据 创建一个Series,pandas可以生成一个默认的索引 通过numpy创建DataFrame...

  • pandas-批量运算,map

    pandas批量运算主要分按行,按列跟按dataframe计算。一般来说,是for循环的替代算法。批量运算一般是用...

  • Pandas-读取、查看数据

    读取数据 读取csv 读取压缩包 保存为csv 查看数据 参考Basics section 查看数据类型 查看he...

  • pandas-读取筛选数据

    之前的文章pandas读取表格数据[https://www.jianshu.com/p/c2dc3205abdb]...

  • pandas-写入csv/excel

    我以为写入很复杂,然后刚刚学习并且试了一下,发现pandas真伟大。 写入csv dic_data是要写入的数据,...

  • pandas-批量运算,apply,applymap

    apply也是可以计算列的,但更重要的功能是按行计算和groupby联合使用。但是我一直都没太搞懂这个apply,...

  • 快速熟悉pandas-读取数据

    How do i read a tabular data file into pandas ? 怎么用pandas...

网友评论

      本文标题:Pandas-其他

      本文链接:https://www.haomeiwen.com/subject/aabdeqtx.html