第一章 Pandas基础
第一章 Pandas基础
导入pandas与numpy模块:
import pandas as pandas import numpy as np
查看pandas的版本:
print(pd.__version__) # 打印处pd的__version__属性
输出结果:‘1.0.3’
一、文件读取与写入
1.读取
(a) csv格式
df = pd.read_csv('data/table.csv') # 此处参数是要读取的文件的路径(.csv格式)
print(type(df)) # 获取df的类型,为pandas.core.frame.DataFrame类
print(df.head()) # head()返回数据的前五行(类似于Linux中的head命令)
输出结果:
(b) txt格式
df_txt = pd.read_table('data/table.txt') # 可设置sep分隔符参数
print(df_txt)
输出结果:
© xls/xlsx格式
# 需要安装xlrd包
df_excel = pd.read_excel('data/table.xlsx')
print(df_excel.head())
输出结果:
2、写入
指定写入格式,通过传入参数还可以在转换格式时设置其他文本属性
关于to_csv和to_excel的参数信息详见:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
(a) csv格式
df.to_csv('data/new_table.csv') # 将df零保存为csv格式,此处参数为新文件名
结果:data文件夹下生成一新文件,名为new_table.csv,并且内容不变
(b) xls或xlsx格式
# 需要安装openpyxl
df.to_excel('data/new_table2.xlsx', sheet_name='Sheet1')
结果:data文件夹下生成一新文件,名为new_table.csv,并且内容不变
二、基本数据结构
1、Series
Series对象本质上是一个NumPy的数组,因此NumPy的数组处理函数可以直接对Series进行处理。但是Series除了可以使用位置作为下标存取元素之外,还可以使用标签下标存取元素,这一点和字典相似。每个Series对象实际上都由两个数组组成。
对于一个Series,其中最常用的属性为:
值(values):可以是一个可迭代的对象。
索引(index):可自行设定
名字(name),类型(dtype)。
(a)创建一个Series
s = pd.Series(np.random.randn(5),index=['a','b','c','d','e'],name='这是一个Series',dtype='float64')
print(s)
输出结果:
(b)访问Series属性
print(s.values)
print(s.name)
print(s.index)
print(s.dtype)
输出结果:
(c)取出某一个元素
print(s['a']) # 说明Series内部实现了__getitem__方法
输出结果:0.241320545363
(d)调用series的方法
print(s.mean())
# 查看Series的其他方法
print([attr for attr in dir(s) if not attr.startswith('_')])
输出结果:3.0
[‘T’, ‘a’, ‘abs’, ‘add’, ‘add_prefix’, ‘add_suffix’, ‘agg’, ‘aggregate’, ‘align’, ‘all’, ‘any’, ‘append’…]
2、DataFrame
data frame 是一种将数据存储在矩形网格中的方法,网格的每一行对应于实例的度量或值,而每一列则包含特定变量的数据的向量。
(a)创建一个DataFrame
df = pd.DataFrame({'col1':list('abcde'),'col2':range(5,10),'col3'[1.3,2.5,3.6,4.6,5.8]},index=list('一二三四五'))
print(df)
输出结果:
(b)从DataFrame取出一列为Series
print(df['col1'])
print(type(df))
输出结果:
(c)修改行或列名
df = df.rename(index={'一':'one'},columns={'col1':'new_col1'})
print(df)
输出结果:
(d)调用属性和方法
print(df.index)
print(df.columns)
print(df.values)
print(df.shape) # df的[行数,列数]
print(df.mean()) # 求每列的平均值,仅针对数字
输出结果:
(e)索引对齐特性
如下代码,在执行df1-df2时,会将key相同value相减
df1 = pd.DataFrame({'A':[1,2,3]},index=[1,2,3])
df2 = pd.DataFrame({'A':[1,2,3]},index=[3,1,2])
df1-df2 #由于索引对齐,因此结果不是0
输出结果:
(f)列的删除与添加
对于删除而言,可以使用drop函数或del或pop
设置inplace=True后会直接在原DataFrame中改动,相当于df = df.drop(…)
df.drop(index='五',columns='col1') # 删除第五行和第一列
print(df)
输出结果:
df['col1']=[1,2,3,4,5]
del df['col1'] # 删除引用
print(df)
输出结果:
df['col1']=[1,2,3,4,5]
print(df.pop('col1')) # 这里的pop机制类似于普遍的pop函数
结果:
可以直接增加新的列,也可以使用assign方法
df1['B']=list('abc')
df1.assign(C=pd.Series(list('def'))) # assign不会修改原对象,会返回修改后的对象
输出结果:
(g)根据类型选择列
print(df.select_dtypes(include=['number']).head())
print(df.select_dtypes(include=['float']).head())
输出结果:
(h)将Series转换为DataFrame
s = df.mean()
s.name='to_DataFrame'
print(s)
输出结果:
print(s.to_frame())
输出结果:
使用T符号可以转置
print(s.to_frame().T)
输出结果:
三、常用基本函数
- 初始化接下来一节要用的文件
df = pd.read_csv('data/table.csv')
1、head和tail
print(df.head())
print(df.tail())
print(df.head(3)) # 可以指示显示多少行
输出结果:
2、unique和nunique
nunique显示有多少个唯一值
print(df['Physics'].nunique())
输出结果:7
unique显示所有的唯一值
print(df['Physics'].unique())
输出结果:
3、count和value_counts
count返回非缺失值元素个数
print(df['Physics'].count())
输出结果:35
value_counts返回每个元素有多少个
print(df['Physics'].value_counts())
输出结果:
4、 describe和info
info函数返回有哪些列、有多少非缺失值、每列的类型
print(df.info())
输出结果:
describe默认统计数值型数据的各个统计量
print(df.describe()) # 可通过percentiles=[.05, .25, .75, .95]控制位数
输出结果:
7、 apply函数
df['Math'].apply(lambda x:str(x)+'!') #可以使用lambda表达式,也可以使用函数# 由python理论可知,高阶函数的使用可以转化为推导式的使用,所以上述代码等价于
df['Math'] = [str(n)+'!' for n in df['Math']]
练习一
代码:
s1 = pd.read_csv('data/Game_of_Thrones_Script.csv') # 要统计的对象
print('共计人数:', s1["Name"].nunique()) # 出现人数
print('(按单元统计)说话最多:', s1['Name'].value_counts().index[0])
# 按单词统计
s1.assign(Words=s1['Sentence'].apply(lambda x:len(x.split()))).sort_values(by='Name')
s1_list = list(zip(s1['Name'], s1['Words']))
l1 = []
for n in s1_list:for i in range(n[1]):l1.append(n[0])
c = collections.Counter(l1) # 需要collections模块
print('(按单词统计)说话最多:', c.most_common()[0][0], "说了:", c.most_common()[0][1], '个词')
输出结果:
练习二
代码:
s2 = pd.read_csv('data/Kobe_data.csv', index_col='shot_id')
s2_two_list = pd.Series(list(zip(s2['action_type'],s2['combined_shot_type']))).value_counts()
print('最多组合:', s2_two_list.index[0])
print('最常遇到的队伍ID:', s2['game_id'].value_counts().index[0])print(pd.Series(list(list(zip(*(pd.Series(list(zip(s2['game_id'], s2['opponent']))).unique()).tolist()))[1])).value_counts().index[0])
输出结果:
ist.index[0])
print(‘最常遇到的队伍ID:’, s2[‘game_id’].value_counts().index[0])
print(pd.Series(list(list(zip(*(pd.Series(list(zip(s2[‘game_id’], s2[‘opponent’])))
.unique()).tolist()))[1])).value_counts().index[0])
输出结果:<img src="https://github.com/Trafalgar99/pandas/tree/master/images\image-20200419170000446.png" alt="image-20200419170000446" style="zoom:67%;" />
第一章 Pandas基础相关推荐
- pandas 第二章 pandas基础
第二章 pandas基础 import numpy as np import pandas as pd import xlrd 在开始学习前,请保证pandas的版本号不低于如下所示的版本,否则请务必 ...
- joyful pandas第1章 Pandas基础
joyful pandas第1章 Pandas基础 Learning Objective 理论部分 一.文件读取与写入 1. 读取 (a)csv格式 (b)txt格式 (c)xls或xlsx格式 2. ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节
第一章计算机基础知识 第一节.了解计算机 尊敬的各位评委老师: 大家好!我今天说课的题目是<了解计算机>.我将从以下五方面来谈谈对这节课的设计:即说教材.学情分析.说教法和学法.说教学过程 ...
- 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt
第一章计算机基础概述全解 1.2.3 汉字编码 汉字的编码 国标码:中文内码之一,汉字信息交换的标准编码.国标码是不可能在计算机内部直接采用.于是, 汉字的机内码采用变形国标码 . 国标码:作为转换为 ...
- 微型计算机基础 教案,第一章微型计算机基础知识新080902电子教案(153页)-原创力文档...
第一章 微型计算机基础知识;第一章? 微型计算机基础知识;§1.1 计算机中数的表示方法;1.1.1 进位计数制及各计数制间的转换;二进制数的特点; 十进制--符合人们的习惯二进制--便于物理实现十六 ...
- 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...
第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...
- 计算机术语new一个,微机原理第一章计算机基础知识(new)
<微机原理第一章计算机基础知识(new)>由会员分享,可在线阅读,更多相关<微机原理第一章计算机基础知识(new)(47页珍藏版)>请在人人文库网上搜索. 1.1.第一章计算机 ...
- 自考第一章计算机基础知识,2018年自考计算机网络技术基础复习资料:第一章...
第一章 计算机基础知识 电子计算机的发展阶段分为: 1 第一代电子计算机.用电子管.以构成计算机的电子器件来1946年第一台电子计算机. 2 第二代电子计算机的特点是用晶体管. 3 第三代电子计算机的 ...
最新文章
- Angular - - $sce 和 $sceDelegate
- 点空白也弹窗口。看我弹
- linux lvm 逻辑卷 创建 扩容 缩减 删除
- Skype for Business Server 2015-09-测试-基本功能(建议:看PDF!)
- mov eax,dword ptr fs:[0] 指令
- DotNet(C#)自定义运行时窗体设计器 一
- es dsl多条件组合查询(转)
- STM32F0使用LL库实现PWM输出
- 27. 二叉搜索树与双向链表(C++版本)
- 使用docker-compose 大杀器来部署服务 上(转)
- Mac 下如何解压 bin 文件
- 求陈敏老师所著的《OPNET物联网仿真》中的模型IOT_Simulation.rar,万分感谢!
- ubuntu16.04修改DNS永久生效
- Python-数组切片
- Blender图解教程:设置参考图
- 传智播客技术社区_播客与网络技术的未来
- 【网络教程】解决Windows11使用Alt+Tab同软件显示多个标签的问题(Edge浏览器)
- 剪辑音频用什么软件好?
- 失去了以后才会懂得珍惜,你已经错过了当初最认真的我
- java基于微信小程序的智能停车场管理系统+ssm+uinapp+Mysql+计算机毕业设计