前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >003.python科学计算库pandas(上)

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

作者头像
qubianzhong
发布2018-09-19 12:55:26
6420
发布2018-09-19 12:55:26
举报
文章被收录于专栏:行者常至行者常至

版权声明:本文为博主原创文章,允许转载,请标明出处。 https://cloud.tencent.com/developer/article/1342935

测试数据 food_info.csv


head

代码语言:javascript
复制
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

代码语言:javascript
复制
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])
代码语言:javascript
复制
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

代码语言:javascript
复制
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)
代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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))

列的算术运算

代码语言:javascript
复制
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))
代码语言:javascript
复制
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])
代码语言:javascript
复制
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

代码语言:javascript
复制
import pandas

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

sort_values

代码语言:javascript
复制
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])

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试数据 food_info.csv
  • head
  • loc
  • column
  • tolist
  • for
  • 列的算术运算
  • max
  • sort_values
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档