1.数据的读取

import pandas
food_info = pandas.read_csv("food_info.csv")#由于代码和数据是存在于同一文件夹下,所以不用指定绝对路径)
print(type(food_info))#pandas的核心数据结构DataFrame(它是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等),它既有行索引也有列索引,可以被看成是由series组成的字典)
print(food_info.dtype)#打印数据结构的类型结构(某个指标是某种类型的列表)
print(help(pandas.read_csv))#打开read函数的帮助文档
food_info.head()#显示一部分读入的数据,默认前五条
food_info.head(3)#显示前三条数据
food_info.tail(4)#显示最后4条数据(从后往前读)
print(food_info.columns)#读取数据的列名
print(food_info.shape)#读取数据的规模

2.索引数据

print(food_info.loc[0])#读取第0号数据,结果为0号数据的所有列
#pandas里面的所有dtypes:object--for string values;float--for float values; int--for string values; datetime--for time values; bool--for boolean values
food_info.loc[3:6]#索引3到6号数据(按行取)
ndb_col = food_info["NDB_No"] #取列名为NDB_No的那列数据
columns = ["Zinc_(mg)","Copper_(mg)"]#给要取的两个列名赋值一个变量
zinc_copper = food_info[Columns]
print(zinc_copper)#即可打印出两列的数据

3.索引特定的数据(例如单位为"g"的数据)

col_names = food_info.columns.tolist() #.columns函数作用是读取列名,.tolist函数的作用是将列名用list形式呈现
print(col_names)
gram_columns = []#定义list的变量,准备存放以(g)为单位的列名for c in col_names:if c.endswith("(g)"): #遍历变量名,查找以(g)为结尾的,如果列名是以“(g)”结尾的,则将其放入到gram_columns的列表中gram_columns.append(c)
gram_df = food_info[gram_columns]#gram_df 是所有以(gram_columns)为列名的列的数据
print(gram_df.head(3))#打印前三行

4.对pandas数据进行计算

print(food_info["Iron_(mg)"])
div_1000 = food_info["Iron_(mg)"]/1000#对"Iron_(mg)"列的所有数据除以1000
print(div_1000)
water_energy = food_info["Water_(g)"]*food_info["Energy_Kcal"] #同维度的数据,对应元素相乘

5.新加入一列数据(前提行数相同)

div_1000 = food_info["Iron_(mg)"]/1000
print(food_info.shape)
food_info["Iron_(g)"] = div_1000 #给div_1000起的列名为"Iron_(g)",并加入原来的数据
print(food_info.shape)

6.常用函数

#最值查找&归一化
max_calories = food_info["Energ_Kcal"].max() #找出"Energ_Kcal"列的最大值,并赋值给max_calories
normalized_calories = food_info["Energ_Kcal"]/max_calories #归一化操作
normalized_protein = food_info["Protein_(g)"]/food_info["Protein_(g)"].max() #归一化操作
#排序
food_info.sort_values("Sodium_(mg)",inplace=True)#.sort_values()函数旨在于从小到大排序。本句代码意思是对"Sodium_(mg)"列进行从小到大排序,升序(默认)
food_info.sort_values("Sodium_(mg)",inplace=True,ascending = False)#ascending = False,从大到小排列(降序)

7.数据预处理实例

import pandas as pd
import numpy as np
titanic_survival = pd.read_csv("titanic_train.csv")
titanic_survival.head()age = titanic_survival["Age"]
print(age.loc[0:10])
#缺失值问题处理----查找
age_is_null = pd.isnull(age) #.isnull()函数用于判断是否缺失,是为True,否定为False
print(age_is_null)
age_null_true = age[age_is_null]#本句操作会留下所有为True的值
print(age_null_true)
age_null_count = len(age_null_true) #本句为计算缺失值的总数(长度)
print(age_null_count)#缺失值问题处理----删掉(当有缺失值时,计算结果为nan,无法获得所需结果)
good_ages = titanic_survival["Age"][age_is_null] == False] #只保留不缺失值的部分
correct_mean_age = sum(good_ages)/len(good_ages)#计算年龄均值
print(correct_mean_age)
#问题一:计算3种不同舱位分别的平均价格  mean fare each class
passenger_classes = [1, 2, 3] #三种舱位
fare_by_class = {}
for this_class in passenger_classes: #遍历舱位pclass_rows = titanic_survival[titanic_survival["Pclass"] == this_class] #分别找出坐1,2,3等舱的人的数据pclass_fares = pclass_rows["Fare"] #定位到价格那一列fare_for_class = pclass_fare.mean()#求该列均值 .mean()求均值函数fare_by_class[this class] = fare_for_class
print(fare_by_class)
#运行结果:1:84.154     2:20.662    3:13.675
#简化该数据统计问题的解答(求三种舱位平均获救人数)
passenger_survival = titanic_survival.pivot_table(index="Pclass",values="Survived",aggfunc=np.mean)#.pivot_table()是统计中常用函数,此处三个参数,index是指的舱位种类(1,2,3),values指的是是否获救,aggfunc指的是计算3种舱位平均获救人数,即舱位类型和获救人数之间的关系。
print(passenger_survival)
#运行结果:1 38.233441   2  29.877630  3  25.140620
#问题二:三种舱的平均年龄
passenger_age = titanic_survival.pivot_table(index="Pclass",values="Age", aggfunc=np.mean)
print(passenger_age)
#问题三 :分析登船码头,船票价格这两个变量与获救人数的关系
port_starts = titanic_survival.pivot_table(index="Embarked",values=["Fare","Survived"], aggfunc=np.sum)
print(port_starts)
#运行结果
#Embarked       Fare           Survived
#  C            10072.26        93
#  Q            1022.25         30
#  S            17439.39        217
#问题四:丢掉缺失值的简化操作 .dropna()
new_titanic_survival = titanic_survival.dropna(axis = 0,subset = ["Age","Sex"])#将Age和Sex列存在缺失值的行去掉
#问题五:定位到具体值,指定行列即可
raw_index_83_age = titanic_survival.loc[83,"Age"] #83行Age列
row_index_1000_pclass =  titanic_survival.loc[83,"Pclass"]#83行Pclass列
print(raw_index_83_age)
print(row_index_1000_pclass)
#问题六:按年龄大小排序,并且重新编号index
new_titanic_survival = titanic_survival.sort_values("Age",ascending=False)#按照降序排列,序号还是原序号
print(new_titanic_survival)
titanic_reindexed = new_titanic_survival.reset_index(drop=True) #序号也重新编排
print(titanic_reindexed.loc[0:10])

8.自定义函数
当pandas内置的函数满足不了需求时,可以编写代码,拼接起来,即自定义函数。

#Q1:This function returns the hundredth item from a series
def hundredth_row(column):#extract the hundredth itemhundredth_item = column.loc[99]return hundredth_item
#return the hundredth item from each column
hundredth_row = titanic_survival.apply(hundredth_row)
print(hundredth_row)
#Q2:每列的缺失值个数
def not_null_count(column):column_null = pd.isnull(column)null = column[column_null]return len(null)
column_null_count = titanic_survival.apply(not_null_count)
print(column_null_count)
#输出的是每列缺失值的个数

9.series结构
pandas里的主要数据结构就是DataFrame结构(相当于矩阵),它是由一系列Series组成的(相当于一行或者一列)

import pandas as pd
fandango = pd.read_csv('fandango_score_compaiison.csv')
series_film = fandango['FILM']
print(type(series_film))
print(series_film[0:5])

3.python数据分析处理库pandas(学习笔记)相关推荐

  1. Python数据分析入门--NumPy进阶学习笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 NumPy 进阶操作 1.NumPy dtype 层次结构 2.NumPy 高阶数组操作 2.1数组的重塑 2.2数组 ...

  2. Python数据分析入门--灰色预测学习笔记

    文章目录 一.灰色预测简介 二.GM(1,1)模型的原理 1. 级比检验 2. 构造累加序列 3. 生成紧邻均值序列 4. 建立灰微分方程 5. 求解白化方程 6. 精度检验 三.Python实现GM ...

  3. Python数据分析入门--Numpy基础学习笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 NumPy基础 1.NumPy nadarray:多维数组对象 1.1ndarray及其数据类型 1.2NumPy数组 ...

  4. 01、python数据分析与机器学习实战——python数据分析处理库-Pandas

    pandas介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. panda ...

  5. python抓包库_python学习笔记——pcap抓包

    今天看看如何用python实现抓包. 以前我们曾用过winpcap实现抓包,其实今天我们还是用它,只不过是它在python下的模块,在用之前我们必须先下载两个库,pcap库和dpkt库,这个可以在Go ...

  6. python数据分析库pandas-三、: python数据分析处理库-Pandas

    本节内容: Pandas数据读取 Pandas索引与计算 Pandas数据预处理实例 Pandas常用预处理方法 Pandas自定义函数 Series结构 1.Pandas数据读取 import pa ...

  7. Python数据分析扩展库pandas的DataFrame排序方法小结

    >>> import numpy as np >>> import pandas as pd # 创建DataFrame >>> df = pd. ...

  8. B站学习云开见明:Python数据分析入门到精通学习笔记

    Python使用基础 Python安装- jupyter notebook快捷键: shift+enter:运行本单元,选中下个单元 Ctrl+enter:运行本单元 界面上的按键Cell–All O ...

  9. python数据分析处理库-Pandas

    1.读取数据 import pandas food_info = pandas.read_csv("food_info.csv") print(type(food_info)) # ...

最新文章

  1. java rect平移_如何在Java Swing中使用鼠标平移图像
  2. Android 系统镜像: boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
  3. rda8955平台搭建摘要截图
  4. 洛谷 P2596 [ZJOI2006]书架 (splay)
  5. python函数编程实战_别找了,这是 Pandas 最详细教程了
  6. 震撼!英伟达用深度学习做图像修复,毫无ps痕迹
  7. 当前记录集不支持更新_不断中招的你还放心升级win10吗?wi10近期更新问题及解决办法...
  8. 线程安全之原子性Atomic(AtomicInteger|LongAdder|AtomicLong)
  9. android写一个遥控器界面,遥控器界面软件的设计 - 基于安卓系统手机WiFi的家用智能遥控器开发...
  10. 微信demo小游戏:飞机大战从无到有
  11. android 超链接事件,Android之捕获TextView超链接
  12. 京东话费充值系统架构演讲读后感
  13. 泰克MDO3104示波器_六合一示波器_无限多功能
  14. 班级日常工作管理系统
  15. 世界儿童日,周大福真诚关爱儿童成长
  16. python爬取丁香园首页疫情json数据,尝试存入mysql数据库
  17. 找7的倍数和含有7的数问题
  18. ERP新平台促管理软件第三次革命(转)
  19. Jupyter Notebook基础知识总结
  20. v-html指令怎么防止XSS注入

热门文章

  1. 读《why programs fail》的闲话
  2. mysql56401_一款你不容错过的Laravel后台管理扩展包 —— Voyager
  3. python中mainloop什么意思_Tkinter中的mainloop应该如何理解?
  4. 商业智能软件对比评测:FineBI和Tableau
  5. 饕餮盛宴 | 人工智能与未来城市
  6. 【经典】纪念米加艾尔·塔利维尔吉耶夫《春天的17个瞬间》音乐会[部分]
  7. Qt Windows DPI适配
  8. MyBatis基础篇
  9. 数学中那些非常奇葩的证明
  10. OC中的^怎么理解?