常用数据处理方法
Posted 懵哥很懵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用数据处理方法相关的知识,希望对你有一定的参考价值。
后续慢慢补充。
Pandas
以下代码需要:
import pandas as pd
读取数据
df = pd.read_csv(path)
得到一个 data_frame
对象。
表的大致概况
-
表头、表尾数据
df.head() # 输出表头5项 df.tail() # 输出表尾5项
-
表大致情况
describe
df.describe() # 关于表大致数据
-
表每列数据情况
info
df.info() # 输出每列的列名、元素个数和元素类型
选择数据
-
取几行或列。返回值为
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行的所有数据
-
丢弃行或列。返回值为
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中的行。
-
选取值。返回值为
list
对象。column_head = df.columns.values # 选取列名 column_value = df[column_name].values # 选取列名为column_name的一列的值,其中column_name为字符串。
-
拼接数据。返回值为
data_frame
对象。two_cols = df.concat(df[col_name1], df[col_name2]) # 选择两列拼接成为一个新data_frame。
数据简单处理
-
缺失
isnull()
df.isnull() # 返回一个同大小的布尔值data_frame,反映值是否是空值。 df.isnull().any() # 返回每一列是否有空值。 df.isnull().sum() # 返回每一列的空值数目。
-
极值和求和
max(), min(),sum()
df.sum(axis=1) # 统计每一列的和 df.sum(axis=0) # 统计每一行的和 df.max() # 统计每列最大值
-
排序
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为降序。
-
分组取最大
nlargest
df.nlargest(n, columns=column_name) # 选取最大的n列,选取column_name列的值作为比较。
-
绘制散点图
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]。
-
数据相关度
corr()
corrmatrix = df.corr() # 获取任意两不同列之间的线性关系强弱矩阵。
Matplotlib
需要:
import matplotlib.pyplot as plt
-
绘制图像:
plt.plot([x], y, [x2], [y2]...) # 根据数据x, y, x2, y2绘制。若无x参数则按y的编号来。x2, y2 为第二条曲线。 plt.show() # 展示图像。
-
绘制子图
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
-
绘制一个正态分布
norm
。 -
绘制直方图
probplot
。res = stats.probplot(array, plot=plt) # 根据指定理论分布(默认为正态分布)的分位数生成样本数据的概率图。plot参数表示绘图用方法,通常采用matplotlib.pyplot进行。
以上是关于常用数据处理方法的主要内容,如果未能解决你的问题,请参考以下文章