常用数据处理方法

Posted 懵哥很懵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用数据处理方法相关的知识,希望对你有一定的参考价值。

后续慢慢补充。

Pandas

以下代码需要:

import pandas as pd

读取数据

df = pd.read_csv(path)

得到一个 data_frame对象。

表的大致概况

  1. 表头、表尾数据

    df.head() # 输出表头5项
    df.tail() # 输出表尾5项
    
  2. 表大致情况 describe

    df.describe() # 关于表大致数据
    
  3. 表每列数据情况 info

    df.info() # 输出每列的列名、元素个数和元素类型
    

选择数据

  1. 取几行或列。返回值为 data_frame对象。

    column = df[column_name1, column_name2] # 选取列名为column_name1和column_name2的两列,类型仍为data_frame。column_name1和column_name2为一字符串。
    column = df[column_name_list] # 选取列名在字符串list column_name_list的列作为一个新data_frame对象。
    
    column = df[check(condition)] # check 为一函数,返回真假。选取满足条件的列。
    
    column = df[column_name] # 选取列名为column_name的一列,类型仍为 data_frame。column_name为一字符串。
    column = df.iloc[a : b, c : d] # 选取行号在[a,b),列号在[c,d) 的数据作为一个新data_frame。
    row = df.iloc[a] # 选取第a行的所有数据
    
  2. 丢弃行或列。返回值为 data_frame对象。

    part = df.drop(column_name, axis=1) # 删去df的column_name列后得到的新data_frame赋值给part。原df不变化。column_name为一字符串。axis=1表示删去列,axis=0表示删去行。
    part = df.drop(labels=column_name,axis=1) # 效果同上。
    part = df.drop(index=index_list, axis=0) # 删除行号在index_list中的行。
    
  3. 选取值。返回值为 list对象。

    column_head = df.columns.values # 选取列名
    column_value = df[column_name].values # 选取列名为column_name的一列的值,其中column_name为字符串。
    
  4. 拼接数据。返回值为 data_frame对象。

    two_cols = df.concat(df[col_name1], df[col_name2]) # 选择两列拼接成为一个新data_frame。
    

数据简单处理

  1. 缺失 isnull()

    df.isnull() # 返回一个同大小的布尔值data_frame,反映值是否是空值。
    df.isnull().any() # 返回每一列是否有空值。
    df.isnull().sum() # 返回每一列的空值数目。
    
  2. 极值和求和 max(), min(),sum()

    df.sum(axis=1) # 统计每一列的和
    df.sum(axis=0) # 统计每一行的和
    df.max() # 统计每列最大值
    
  3. 排序 sort_values()

    df.sort_values(by=column_list, axis=1, ascending=true/false) # 按column_list中先后顺序进行排序,对行排序,true为升序,false为降序。
    df.sort_values(by=row_list, axis=0, ascending=true/false) # 按row_list中先后顺序进行排序,对列排序,true为升序,false为降序。
    
  4. 分组取最大 nlargest

    df.nlargest(n, columns=column_name) # 选取最大的n列,选取column_name列的值作为比较。
    
  5. 绘制散点图 plot.scatter()

    fig = df.plot.scatter(x=column_name1, y=column_name2, xlim=[a,b], ylim=[c,d])
    # 根据行x=df[column_name1], y=df[column_name2]绘制散点图,x范围[a,b],y范围[c,d]。
    
  6. 数据相关度 corr()

    corrmatrix = df.corr() # 获取任意两不同列之间的线性关系强弱矩阵。
    

Matplotlib

需要:

import matplotlib.pyplot as plt
  1. 绘制图像:

    plt.plot([x], y, [x2], [y2]...) # 根据数据x, y, x2, y2绘制。若无x参数则按y的编号来。x2, y2 为第二条曲线。
    plt.show() # 展示图像。
    
  2. 绘制子图

    fig, axes = plt.subplot(x, y, figsize=(a, b)) # 纵向放置x个子图,横向放置y个子图,每个子图大小为a*b。
    

Seaborn

需要:

import seaborn as sns

SciPy

分割数据

需要:

from sklearn.model_section import train_test_split
x_train, x_test, y_train, y_test = train_test_split(feature, result, test_size=rate/count)
# 将数据集分割成训练集和测试集,feature为训练参数x,result为监督结果y。test_size为一小数(rate)则取test_size*all作为测试集,否则取固定数目count个。

数据统计

需要:

import scipy.stats as stats
import matplotlib.pyplot as plt
  1. 绘制一个正态分布 norm

  2. 绘制直方图 probplot

    res = stats.probplot(array, plot=plt) # 根据指定理论分布(默认为正态分布)的分位数生成样本数据的概率图。plot参数表示绘图用方法,通常采用matplotlib.pyplot进行。
    

以上是关于常用数据处理方法的主要内容,如果未能解决你的问题,请参考以下文章

Java Array.sort的六种常用方法总结

Java Array.sort的六种常用方法总结

Java Array.sort的六种常用方法总结

java8List.sort()排序常用方法

Java基础常用类:ArraysMath类

Java基础常用类:ArraysMath类