Pandas数据读取
food_info = pandas.read_csv(“文件名”) 读取csv文件
print(type(food_info)) 显示food_info的类型,csv文件的类型是dataframe
print(food_info.dtypes) 显示每一列的特征存储的是什么类型,可以看到在csv文件中,str类型被称作object
food_info.head()显示部分数据,默认前5条数据若是head(4)显示前4行
food_info.tail() 显示尾几行
food_info.columns 显示列名
food_info.shape 行*列
Pandas索引与计算
food_info.loc[0] 第一个样本的数据
ndb_col = food_info[“列名”] 取一列数据
若想取多列,则另column = [列名1,列名2]
col = food_info[column] ,这样就取出了两行
col_names = food_info.columns.tolist() 将每一列的列名提取出来做成list
ndb_col = food_info[“列名”] /1000 就是将该列数据全部除以1000
food_info[ 新列名] = alist 对dataframe新加入一个列名,并给出他说对应的值
ndb_col = food_info[“列名”] .max() 找出一列的最大值
food_info.sort_values(“列名”,inplace= True) #给某一列的值排序
inplace判断是新生成一个dataframe还是在原基础上改,默认是从小到大排序。若想从大到小排序,指令如下
food_info.sort_values(“列名”,inplace= True,ascending=False)
预处理实例
Titanic数据集
age= titanic_survival[“Age”]
age_is_null = pd.isnull(age) #判断age里的值是否缺失,返回的是布尔值,以及与它对应的index,True为缺失
age_null_true = age[ age_is_null ] 返回age_is_null 里为True的值,即缺失值,左边有index,如下:
存在缺失值,会影响后续计算,需要处理一下。
若想去掉该样本:
new_titanic_surval = titanic_survival.dropna(axis = 0,subset =[“Age”,“Sex”])
若指定两列某些样本存在缺失值,则去掉该样本
若需要计算的值,与两列有关。例如分别计算三种等级船票的生还率:
passenger_survival = titanic_survival.pivot_table(index = ‘Pclass’ , values = “survived”,aggfunc = np.mean) #默认就是求均值的操作
print(passenger_survival )
计算两列以上的值
passenger_survival = titanic_survival.pivot_table(index = ‘Embarked’ , values = [“survived”,“Fare”],aggfunc = np.sum)
自定义函数应用
def hundredth_row(column):
hundredth_item = colomn.loc[99]
return hundreth_item
hundredth_row = titanic_survival.apply(hundredth_row)#默认是列处理,axis= 1 是行处理
print(hundredth_row )
返回所有特征的第100个数据,即第100个样本
当然,你可以定义任何你想处理的函数,比如根据年龄判断是成年人还是小孩。
Pandas的其他结构:series
所用数据集如下:
series是dataframe里的一行或者一列,可以这么说,dataframe是由series构成的。
import pandas as pd
from pandas import Series
fandango = pd.read_csv(“fandango_score_comparision.csv”)
series_film = fandango [“film”]# series_film就是series的type
series_rt = fandango[“RottenTomatoes”]
film_names = series_film.values# film_names 的类型是ndarray,说明dataframe里的结构是series,series里面的结构是ndarray.pandas 是封装在numpy之上的。
series_custom = Series(series_rt, index = series_film )#Series可以把str当作索引值
series_custom.sort_index()#按照series的键排序
series_custom.sort_values()#按照series的值排序
其实dataframe也是可以将str当作index的
fandango_film = fandango.set_index(‘FILM’,drop= False)#将Film当作索引值
rt_mt_user = floatdf[[‘列名’,‘列名’]] #floatdf是所有type为float64类型的列
rt_mt_user .apply(lambda x :np.std(x),axis = 1)#计算这两列数据的标准差,在这里用到的np里的std,要注意这个和pd里的std是不一样的,np是针对总体而言,pd是针对样本而言(除以n-1而不是n)