第一步:
指定文件的编码类型:
# -*- coding: utf-8 -*-
#作为一个纯文科生,虽然知道需要指定,还是记录下来吧,免得忘记了。
第二步:数据读取的问题
food_info = pd.read_csv("C:\Users\enryl\PycharmProjects\data/food_info.csv")
(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
上面那段执行后报如上错误,原因是:
在Python中 \ 是转义符,\u表示其后是UNICODE编码,因此\User在这里会报错,在字符串前面加个 r(rawstring 原生字符串),可以避免python与正则表达式语法的冲突!
修改后为:food_info = pd.read_csv(r"C:\Users\enryl\PycharmProjects\data/food_info.csv") 即可正常读取数据
第三步:显示数据的前几行
df.head()/df.head(10)
如果不指定则是默认读取前5行,如果需要选择具体的行数,则在里面输入需要读取的行数即可。
food_info.tail(1) 表示显示最后结尾几行
第四步:获取数据的列名称
df.columns
获取数据的某一列,通过索引的方式,前面控制的是获取的第几行的数据。 food_info.iloc[0:5,[1]]
最终获取的是一个list的结果,表示获取了数据的所有列名称
第五步:获取数据的大小属性
df.shape
food_info.shape
Out[18]:
(8618, 36)
说明数据是8618行,每一行有36个指标特征
第六步:取一些特殊位置的数据
df.loc[3:5] 这里是获取基本的行数据,不包含前面包含后面那一行的数据,特别注意,python的索引是从0开始的。
获取列数据的方法:
第一种方法:根据列名字获取
food_info['NDB_No']
Out[20]:
food_info[['NDB_No','Shrt_Desc']]
如上,则取出来的是两列的数据
第二种方法,通过loc和iloc获取数据行和列
基本的loc是获取行数据,可以直接通过索引获取。
这里学习这个帖子的,写的很清楚:
https://blog.csdn.net/w_weiying/article/details/81411257
第七步:对某些列的数据进行筛选和初步的数据处理
food_info['Water_(kg)']=food_info['Water_(g)']/100 #新建一列,根据需要对数据进行处理
food_info.loc[0:5,['Water_(kg)','Water_(g)']]
Out[49]:
Water_(kg) Water_(g)
0 0.1587 15.87
1 0.1587 15.87
2 0.0024 0.24
3 0.4241 42.41
4 0.4111 41.11
5 0.4842 48.42
第八步:对某些列进行加减乘除的操作,同时赋值到新的的列里面去
water_energ = food_info['Water_(g)']*food_info['Energ_Kcal'] water_energ.head(10) food_info['water_energ'] =water_energ food_info.shape
第九步:对现有的数据进行排序
food_info.sort_values('Sodium_(mg)',ascending=False) #默认是升序的操作,ascending=False 则是降序的操作了