机器学习之pandas

机器学习之pandas

numpy和pandas的区别

numpy更多的是处理数值性的分析,而pandas除了处理数值之外(基于numpy)还能处理其它类型的数据,如字符串,时间序列等。
Series

import pandas as pd
# Series 是一维数组,带标签的数组,标签指的就是索引
# dataFrame是多维数组
series = pd.Series([2, 3, 5, 6, 7])
pd_series = pd.Series([3, 5, 6, 7, 89], index=list("abcde"))
print(series)
print(pd_series)
# 字典方式创建Series,默认key就是标签
temp_dict = {"name":"zhangsan","age":48,"tel":10080}
dictpd = pd.Series(temp_dict)
print(dictpd[:2])
print(dictpd[[1,2]])
print(dictpd)
a = {string.ascii_uppercase[i]:i for i in range(10)}
s1 = pd.Series(a)
print(s1)
s2 = pd.Series(a, index=list(string.ascii_uppercase[0:15]))
print(s2)

DataFrame

# DataFrame对象既有行索引,又有列索引
# 行索引,表明不同行,叫index 0轴 axis=0
# 列索引,表明不同列,叫columns 1轴 axis=1
frame = pd.DataFrame(np.arange(12).reshape(3, 4))
print(frame)
dict = {"name":["xiaoming","xiaohong"],"age":[15,74],"tel":[110,120]}
data_frame = pd.DataFrame(dict)
dict2 = [{"name":"xiaohong","age":14,"tel":110},{"name":"lisi","age":34,"tel":120}]
print(pd.DataFrame(dict2))
print(data_frame)

DaTaFrame

df = pd.read_csv("./a.csv")
print(df)
# 按照某一行进行排序
values = df.sort_values(by="B",ascending=False)
print(values)
# 切片取出前两个
print(values[:2])
# loc通过标签获取行数据
# iloc通过位置获取行数据
print(values.iloc[1,2])
print(values.loc[:,"A"])

pandas之布尔索引

a_ = df[(df["A"] > 80000)&(df["A"]<300000)]
print(a_)

pandas之缺失数据处理

print(pd.isnull(pf))
print(pd.notnull(pf))
print(pf)
print(pf[pd.notnull(pf["C"])])
print(pf[pd.notnull(pf)])
# 删除含有nan的那一行,当数据量较大的时候可以采取删除行列的策略
print(pf.dropna(axis=0))
# 删除含有nan的那一列
print(pf.dropna(axis=1))
# how=any只有含有就删除,how=all,全是才删除
print(pf.dropna(axis=0,how="any"))
# inplace 返回值直接赋值给pf,给自己赋值
print(pf.dropna(axis=0,how="any",inplace=True))
# 填充数据,当数据量较少且数据不发生歧义的情况下,可以给为nan的数据重新赋值
# 填充数据要有意义,如年龄的中值
print(pf.fillna(100))
pf.fillna(pf.mean())
# 或者只对某一列有意义的值做填充,比如年龄有意义,而电话号码就没有意义
pf['age'] = pf['age'].fillna(pf['age'].mean())

pandas和numpy在处理nan的区别
numpy处理nan时,只要含有nan都是nan
pandas处理nan时,自动将nan的数据去除

当数值为0 时,要判断是数据缺失,还是缺失为0,比如考试成绩,点击数,可能确实为0就要按照0来处理,当是数据缺失的情况,就可以将其转换为nan不处理该数据
处理方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值