机器学习——Pandas库
介绍
Pandas是数据再加工过程中使用的最广泛的工具,它包含为使数据分析更加快速便捷而设计的高级数据结构与数据操作工具。Pandas基于NumPy开发,它不仅提供了很多方法和函数,使得处理数据更容易;而且它已经优化了运行速度,与使用Python内置函数进行数据处理相比,这个一个显著的优势。NumPy、SciPy和Pandas三者构成了Python科学计算的支柱。
安装
pip install pandas
conda install pandas
数据结构
Series
Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生最简单的Series.
Series的字符串表现形式为:索引在左边,值在右边。如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引
DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(公用同一个索引)。跟其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或者别的一维数据结构)。
使用
csv
import pandas as pd
from pandas import DataFrame, Series
#将一个xls/xlsx转换成csv
df = DataFrame(pd.read_excel('test.xls'))
df.to_csv('test1.csv')
print(df)
属性与方法
#读取一个csv,获得一个对象
info = pd.read_csv("test1.csv")
# 输出表格的类型,类型为<class 'pandas.core.frame.DataFrame'>
print(type(info))
#输出 表格内容的类型
print(info.dtypes)
# 输出前5条内容
print(info.head())
#获得表格维度(行,列)
print(info.shape)
# 通过列名,获得一个列表,里面是所有的属性
# print(info.listname)
# 获取列中的最大最小值
print(info['listname'].max())
print(info['listname'].min())
数据操作
#获取数据,可以使用列表规则
info = pd.read_csv("test1.csv")
#按照行取数据
print(info.loc[1])
print(info.loc[1:10])
#按照列取数据
name_li = info['listname','listname']
print(name_li)
print(name_li[2:5])
info_null = info.isnull(listname)
info_null_true = info[info_null]
print(info_null_true)
# 将列取出并转换为列表格式
columns = info.listname.tolist()
print(columns)
#可以在维度相同时,添加数据
test = info['cost'] / 100
info['cost2'] = test
## 计算
## 会将属性中的每一项除以100
test = info['cost'] / 100
## 维度相同,会一对一相除
test = info['total'] / info['cost']
## 排序
## 对列的属性进行排列,inplace表示是否在当前表格操作,ascending为False是降序
info.sort_values("listname",inplace=True,ascending=False)
#缺失值
age = info['age']
age_is_null = info.isnull()
age_null_true = age[age_is_null]
print(len(age_null_true))
age_age = info['age'][age_is_null == False]
age_avg = sum(age_age)/len(age_age)
#平均值,去掉缺失值
age_avg = info['age'].mean()
数据统计
#统计,index:以谁为基准;values:和谁的关系;aggfunc:什么关系,默认求平均值
passenger = info.pivot_table(index="name",values="ss",aggfunc=np.mean)
passenger2 = info.pivot_table(index="name",values=["ss","saf"],aggfunc=np.sum)
##丢掉缺失值
drop_info = info.dropna(axis=1)
new_info = info.dropna(axis=0,subset=["ss","age"])
自定义函数
#自定义函数
def ss(colu):
hundredth = colu.loc[99]
return hundredth
hun = info.apply(ss)
print(hun)
series结构
列表其中的一行或者一列是一个series结构
from pandas import Series
import numpy as np
series_films = info['film']
series_customs = info['custom']
film_names = series_films.values
custom_names = series_customs.values
print(type(film_names))
series_custom = Series(custom_names,index=film_names)
films_sort = sorted(film_names)
ss = np.add(film_names,custom_names)