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

版权声明:本文为博主原创文章,允许转载,请标明出处。 https://blog.csdn.net/qwdafedv/article/details/82699688

测试数据 food_info.csv


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])

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏不止是前端

实用主义:面试中的日常闭包

33480
来自专栏听Allen瞎扯淡

Integer的highestOneBit方法源码解析

在读HashMap源码的时候,遇到了Integer的highestOneBit静态方法不是太理解,所以就读了一下源码,这里记录一下。

39110
来自专栏老马说编程

(27) 剖析包装类 (中) / 计算机程序的思维逻辑

本节继续探讨包装类,主要介绍Integer类,下节介绍Character类,Long与Integer类似,就不再单独介绍了,其他类基本已经介绍完了,不再赘述。 ...

230100
来自专栏阿凯的Excel

Series与字典对比介绍(Pandas读书笔记3)

上期和大家分享了默认序号的Series,如果默认序号,Series和列表很像,但是本身pandas也支持自定义序号的列表,如果自定义就和字典很像了。我们今天和大...

32840
来自专栏Python中文社区

深度剖析为什么Python中整型不会溢出

在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数。在python3后,统一使用了长整型。这也是吸引...

54830
来自专栏python全栈布道师

2017年9月5日

28350
来自专栏简书专栏

Pandas入门2

对于DataFrame,对齐会同时发生在行和列上,两个DataFrame对象相加后,其索引和列会取并集,缺省值用NaN。

26620
来自专栏从流域到海域

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

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

27790
来自专栏Create Sun

python 3.x 与2.x的区别

前言   保持学习的态度,学一门动态语言其实是很早以前的就准备要做的事情,当时还在纠结python与ruby。现在不单单是要学python,还在考虑用它做点什么...

42780
来自专栏null的专栏

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

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

37540

扫码关注云+社区

领取腾讯云代金券