python数据处理随笔总结

1.csv文件读取

pandas中,常用的载入函数是read_csv。除此之外还有read_excel和read_table,table可以读取txt。

import pandas as pd
file=pd.read_csv("77.csv",encoding='utf-8')#encoding选择编码方式
file

在这里插入图片描述

2.提取文件

trname=file['triggername']
trname

在这里插入图片描述

3.head展示前几个数据(tail后几个)

一般是前五个,现在是设定的前8个
在这里插入图片描述

4.快速浏览数据

有总数,数据类型

file.head(8)

在这里插入图片描述

5.文件描述

只展示是数字数据的特征,总数,均值等等

file.describe()#

在这里插入图片描述

6.查看独一无二的数据

查看某一列空值:df.isnull()

file['sysEname'].unique()

在这里插入图片描述

查看列名称:

file.columns

在这里插入图片描述

扫描二维码关注公众号,回复: 11338783 查看本文章

7.数据清洗

drop_duplicates函数通过subset参数选择以哪个列为去重基准。keep参数则是保留方式,first是保留第一个,删除后余重复值,last还是删除前面,保留最后一个。duplicated函数功能类似,但它返回的是布尔值。
原来是1543 每个特征只保留一个,就剩下了9

file.drop_duplicates(subset="triggername",keep='first')

在这里插入图片描述

将两个数据拼接在一起

np.hstack([X, X_binned])

查看某个数据总数及类型

data.gender.value_counts()

查看数据的列(行是row)

list(data.columns)

get_dummies 函数自动变换所有具有对象类型(比如字符串)的列或所有分类的列

在这里插入图片描述

提取两个特征之间的所有特征

这是提取了age和’occupation_ Transport-moving之间的数据

features = data_dummies.loc[:, 'age':'occupation_ Transport-moving']

转换数据类型

如age是int型,age.astype(str) 转换成了字符型

将数字数据转化为矩阵

# neHotEncoder和ColumnTransformer:使用scikit-learn的分类变量
from sklearn.preprocessing import OneHotEncoder

#将上面的表格转化成矩阵形式
ohe = OneHotEncoder(sparse=False)
print(ohe.fit_transform(demo_df))

在这里插入图片描述

将连续数据归一化,其他分类特征热编码处理

scikit-learn在0.20.0版本中新增了一个 sklearn.compose.ColumnTransformer
类,通过这个类我们可以对输入的特征分别做不同的预处理,并且最终的结果还在一个特征空间里面。

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler
#讲age hours这种连续特征标准化(归一化),其他分类特征热编码
ct = ColumnTransformer(
    [("scaling", StandardScaler(), ['age', 'hours-per-week']),
     ("onehot", OneHotEncoder(sparse=False), ['workclass', 'education', 'gender', 'occupation'])])

Dataframe是pandas的一种数据类型

有关DDataFrame的详细知识 https://www.jianshu.com/p/8024ceef4fe2

demo_df = pd.DataFrame({'Integer Feature': [0, 1, 2, 1],'Categorical Feature': ['socks', 'fox', 'socks', 'box']}) 

display(demo_df)

json文件转换成字典

json.load

json_dict=json.load(open("xxx.json"))
type(json_dict)

dict

字典 转换为 字符串

json.dumps(json_dict)

将数据写入json文件中

dump

with open("xxx.json","w") as f:
    json.dump(new_dict,f)

pandas的shift()函数

直接看代码就可以理解

df = pd.DataFrame(np.arange(16).reshape(4,4),columns=['AA','BB','CC','DD'],index =['a','b','c','d'])

df
Out[14]: 
   AA  BB  CC  DD
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15
#当period为正时,默认是axis = 0轴的设定,向下移动
df.shift(2)
Out[15]: 
    AA   BB   CC   DD
a  NaN  NaN  NaN  NaN
b  NaN  NaN  NaN  NaN
c  0.0  1.0  2.0  3.0
d  4.0  5.0  6.0  7.0
#当axis=1,沿水平方向进行移动,正数向右移,负数向左移
df.shift(2,axis = 1)
Out[16]: 
   AA  BB    CC    DD
a NaN NaN   0.0   1.0
b NaN NaN   4.0   5.0
c NaN NaN   8.0   9.0
d NaN NaN  12.0  13.0
#当period为负时,默认是axis = 0轴的设定,向上移动
df.shift(-1)
Out[17]: 
     AA    BB    CC    DD
a   4.0   5.0   6.0   7.0
b   8.0   9.0  10.0  11.0
c  12.0  13.0  14.0  15.0
d   NaN   NaN   NaN   NaN

freq: DateOffset, timedelta, or time rule string,可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。

df = pd.DataFrame(np.arange(16).reshape(4,4),columns=['AA','BB','CC','DD'],index =pd.date_range('6/1/2012','6/4/2012'))

df
Out[38]: 
            AA  BB  CC  DD
2012-06-01   0   1   2   3
2012-06-02   4   5   6   7
2012-06-03   8   9  10  11
2012-06-04  12  13  14  15

df.shift(freq=datetime.timedelta(1))
Out[39]: 
            AA  BB  CC  DD
2012-06-02   0   1   2   3
2012-06-03   4   5   6   7
2012-06-04   8   9  10  11
2012-06-05  12  13  14  15

df.shift(freq=datetime.timedelta(-2))
Out[40]: 
            AA  BB  CC  DD
2012-05-30   0   1   2   3
2012-05-31   4   5   6   7
2012-06-01   8   9  10  11
2012-06-02  12  13  14  15

numpy.concatenate((a1,a2,…), axis=0)

能够一次完成多个数组的拼接。其中a1,a2,…是数组类型的参数

>>> a=np.array([1,2,3])
>>> b=np.array([11,22,33])
>>> c=np.array([44,55,66])
>>> np.concatenate((a,b,c),axis=0)  # 默认情况下,axis=0可以不写
array([ 1,  2,  3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果
>>> a=np.array([[1,2,3],[4,5,6]])
>>> b=np.array([[11,21,31],[7,8,9]])
>>> np.concatenate((a,b),axis=0)
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [11, 21, 31],
       [ 7,  8,  9]])
>>> np.concatenate((a,b),axis=1)  #axis=1表示对应行的数组进行拼接
array([[ 1,  2,  3, 11, 21, 31],
       [ 4,  5,  6,  7,  8,  9]])

inverse_transform()将标准化后的数据转换为原始数据。

 X=scaler.inverse_transform(X[, copy])

将标准化后的数据转换为原始数据。

X=pca.inverse_transform(newX)

将降维后的数据转换成原始数据

猜你喜欢

转载自blog.csdn.net/weixin_45755332/article/details/106480425