第一章 Pandas基础

  1. 导入pandas与numpy模块:

    import pandas as pandas
    import numpy as np
    
  2. 查看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)

输出结果:

三、常用基本函数

  1. 初始化接下来一节要用的文件
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基础相关推荐

  1. pandas 第二章 pandas基础

    第二章 pandas基础 import numpy as np import pandas as pd import xlrd 在开始学习前,请保证pandas的版本号不低于如下所示的版本,否则请务必 ...

  2. joyful pandas第1章 Pandas基础

    joyful pandas第1章 Pandas基础 Learning Objective 理论部分 一.文件读取与写入 1. 读取 (a)csv格式 (b)txt格式 (c)xls或xlsx格式 2. ...

  3. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  4. 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节

    第一章计算机基础知识 第一节.了解计算机 尊敬的各位评委老师: 大家好!我今天说课的题目是<了解计算机>.我将从以下五方面来谈谈对这节课的设计:即说教材.学情分析.说教法和学法.说教学过程 ...

  5. 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt

    第一章计算机基础概述全解 1.2.3 汉字编码 汉字的编码 国标码:中文内码之一,汉字信息交换的标准编码.国标码是不可能在计算机内部直接采用.于是, 汉字的机内码采用变形国标码 . 国标码:作为转换为 ...

  6. 微型计算机基础 教案,第一章微型计算机基础知识新080902电子教案(153页)-原创力文档...

    第一章 微型计算机基础知识;第一章? 微型计算机基础知识;§1.1 计算机中数的表示方法;1.1.1 进位计数制及各计数制间的转换;二进制数的特点; 十进制--符合人们的习惯二进制--便于物理实现十六 ...

  7. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

  8. 计算机术语new一个,微机原理第一章计算机基础知识(new)

    <微机原理第一章计算机基础知识(new)>由会员分享,可在线阅读,更多相关<微机原理第一章计算机基础知识(new)(47页珍藏版)>请在人人文库网上搜索. 1.1.第一章计算机 ...

  9. 自考第一章计算机基础知识,2018年自考计算机网络技术基础复习资料:第一章...

    第一章 计算机基础知识 电子计算机的发展阶段分为: 1 第一代电子计算机.用电子管.以构成计算机的电子器件来1946年第一台电子计算机. 2 第二代电子计算机的特点是用晶体管. 3 第三代电子计算机的 ...

最新文章

  1. Angular - - $sce 和 $sceDelegate
  2. 点空白也弹窗口。看我弹
  3. linux lvm 逻辑卷 创建 扩容 缩减 删除
  4. Skype for Business Server 2015-09-测试-基本功能(建议:看PDF!)
  5. mov eax,dword ptr fs:[0] 指令
  6. DotNet(C#)自定义运行时窗体设计器 一
  7. es dsl多条件组合查询(转)
  8. STM32F0使用LL库实现PWM输出
  9. 27. 二叉搜索树与双向链表(C++版本)
  10. 使用docker-compose 大杀器来部署服务 上(转)
  11. Mac 下如何解压 bin 文件
  12. 求陈敏老师所著的《OPNET物联网仿真》中的模型IOT_Simulation.rar,万分感谢!
  13. ubuntu16.04修改DNS永久生效
  14. Python-数组切片
  15. Blender图解教程:设置参考图
  16. 传智播客技术社区_播客与网络技术的未来
  17. 【网络教程】解决Windows11使用Alt+Tab同软件显示多个标签的问题(Edge浏览器)
  18. 剪辑音频用什么软件好?
  19. 失去了以后才会懂得珍惜,你已经错过了当初最认真的我
  20. java基于微信小程序的智能停车场管理系统+ssm+uinapp+Mysql+计算机毕业设计

热门文章

  1. 渝粤教育 陕西师范大学 200951教育科学研究方法作业(高起专、专升本)
  2. Qt下的视频实时传输
  3. vue项目手机真机预览和调试
  4. java并发编程的艺术-(4)
  5. 便捷小工具(一期)(我的成长之路No.11)
  6. “神奇”的拉马努金矩阵
  7. 雷神911MT黑武士3评测
  8. 2020美菜网产品经理春招面经
  9. 未来淘宝网的发展前景将会如何?
  10. XPdf实现pdf转txt格式方法实现