# 003.python科学计算库pandas(上)

### head

```import pandas

food_info = pandas.read_csv("food_info.csv")
# csv文件类型 DataFrame
print(type(food_info))
print("---1")
# dtypes 返回每个列的数据类型。结果为字典
# food_info.dtypes['NDB_No'] 获取NDB_No列的数据类型
print(food_info.dtypes)
print("---2")
# head 返回第一个'n'行 ,缺省时n=5
first_rows = food_info.head(n=3)
print(first_rows)
print("---3")
# columns 获取所有的列名称组成的索引元组
print(first_rows.columns)
print("---4")
# (3, 36)
print(first_rows.shape)```

### loc

```import pandas

food_info = pandas.read_csv("food_info.csv")
# loc[i] 获取第i行的数据 结果为字典 food_info.loc[i]['columnName']
# 其中索引从0开始
print(food_info.loc[0])
# KeyError: 'the label [9999999] is not in the [index]'
# print(food_info.loc[9999999])```
```import pandas

food_info = pandas.read_csv("food_info.csv")
# 返回一个DataFrame，其中包含索引3、4、5和6处的行
food_info.loc[3:6]
# 返回一个DataFrame，其中包含索引2、5和10处的行。下面两种方法都可以。
two_five_ten = [2, 5, 10]
food_info.loc[two_five_ten]
food_info.loc[[2, 5, 10]]```

### column

```import pandas

food_info = pandas.read_csv("food_info.csv")
ndb_col = food_info["NDB_No"]
# 或者，可以通过传入字符串变量来访问列
col_name = "NDB_No"
ndb_col = food_info[col_name]
print(ndb_col)```
```import pandas

food_info = pandas.read_csv("food_info.csv")
columns = ["Zinc_(mg)", "Copper_(mg)"]
zinc_copper = food_info[columns]
# 跳过变量数组赋值
zinc_copper = food_info[["Zinc_(mg)", "Copper_(mg)"]]
print(zinc_copper)```

### tolist

```import pandas

food_info = pandas.read_csv("food_info.csv")
# # columns 获取所有的列名称组成的索引元组
print(type(food_info.columns))
print(food_info.columns)
# food_info.columns[0]='sadfaf'  类型错误(“索引不支持可变操作”)
# tolist 返回值的列表
col_names = food_info.columns.tolist()
col_names[0] = "sdfafg"
print(col_names)
print(type(col_names))```

### for

```import pandas

food_info = pandas.read_csv("food_info.csv")
col_names = food_info.columns.tolist()
gram_columns = []
for c in col_names:
# 将列名称以(g)结尾的,添加进gram_columns列表
if c.endswith("(g)"):
gram_columns.append(c)
# 将gram_columns相关列读取到gram_df
gram_df = food_info[gram_columns]
# 读取gram_df的前3行数据
print(gram_df.head(3))```

### 列的算术运算

```import pandas
import numpy

food_info = pandas.read_csv("food_info.csv")
iron_mg = food_info["Iron_(mg)"]
print(iron_mg[0:3])
# 此列的每一行数据均除以1000
div_1000 = iron_mg / 1000
print(div_1000[0:3])
print()
# 此列的每一行数据均加上100
add_100 = iron_mg + 100
print(add_100[0:3])
print()
# 此列的每一行数据均减去50
sub_100 = iron_mg - 50
print(sub_100[0:3])
print()
# 此列的每一行数据均乘以2
mult_2 = iron_mg * 2
print(mult_2[0:3])
# hstack上篇的连接方法
print(numpy.hstack((iron_mg[0:3], mult_2[0:3])).reshape(2, 3))```
```import pandas

food_info = pandas.read_csv("food_info.csv")
# 它将算术运算符应用于两列中的第一个值，两列中的第二个值，依此类推
print(food_info["Water_(g)"][0:3])
print(food_info["Energ_Kcal"][0:3])
print("-------------------------------")
water_energy = food_info["Water_(g)"] * food_info["Energ_Kcal"]
print(water_energy[0:3])
print("-------------------------------")
iron_grams = food_info["Iron_(mg)"] / 1000
food_info["Iron_(g)"] = iron_grams
print(food_info["Iron_(g)"][0:3])```
```import pandas

food_info = pandas.read_csv("food_info.csv")
# initial_rating = Protein_(g)列乘以2 减去 0.75乘以Lipid_Tot_(g)列
weighted_protein = food_info["Protein_(g)"] * 2
print(weighted_protein[0:3])
print("------------------------------")
weighted_fat = -0.75 * food_info["Lipid_Tot_(g)"]
print(weighted_fat[0:3])
print("------------------------------")
initial_rating = weighted_protein + weighted_fat
print(initial_rating[0:3])```

### max

```import pandas

food_info = pandas.read_csv("food_info.csv")
# Energ_Kcal列上的最大值
max_calories = food_info["Energ_Kcal"].max()
print(max_calories)```

### sort_values

```import pandas

food_info = pandas.read_csv("food_info.csv")
# 默认情况下，panda将按照我们按升序指定的列对数据进行排序，并返回一个新的DataFrame
# 默认情况下，inplace=False 返回新的DataFrame
# 默认情况下，ascending=True 按升序
# 默认情况下，kind=quicksort 使用快速排序算法
# 默认情况下，na_position=last NaN放在最后面 如果=first则放在最前面
# 对DataFrame进行就地排序，而不是返回新的DataFrame。
food_info.sort_values("Sodium_(mg)", inplace=True)
print(food_info["Sodium_(mg)"][0:5])
# 按降序排序，而不是升序排序
food_info.sort_values("Sodium_(mg)", inplace=True, ascending=False)
print(food_info["Sodium_(mg)"][0:5])```

215 篇文章30 人订阅

0 条评论

## 相关文章

33480

39110

230100

32840

54830

28350

26620

### 《笨办法学Python》 第5课手记

《笨办法学Python》 第5课手记 本节内容复习了前两节的内容，并且引入了格式化字符，这节课里的格式化字符与C语言格式化字符，规则没有什么区别。 我把原文代码...

27790

42780

### 设计模式——类图以及类与类之间的关系

设计模式在程序设计上有着很重要的作用，使用设计模式可以使得代码更容易被理解，使得代码更规范，真正实现工程化。 一、用UML表示一个类 ? 类图一般是三行...

37540