Pandas 基础

Pandas 简介

Pandas

Pandas 库基于 NumPy 构建,为 Python 编程语言提供易于使用的数据结构和数据分析工具。

Pandas

使用以下约定导入 Pandas

import pandas as pd

帮助

help(pd.Series.loc)

Pandas 数据结构

序列(Series)

能够保存任何数据类型的一维标记数组

s = pd.Series([1, 3, 5, 7], index=['天', '地', '玄', '黄'])
# 左侧一列为索引
s

天 1 地 3 玄 5 黄 7 dtype: int64

数据框(DataFrame)

不同类型列的二维标记数据结构,类似 Excel 表格

上面一行为列名

左侧一列为索引

-

民族

姓别

年龄

1

小武

3

2

小久

1

3

小鸭

-

data = {'姓': ['贾', '贾', '张'],
        '名': ['小武', '小久', '小鸭́'],
        '民族': ['汉', '汉', '汉'],
        '年龄': [3, 1, None]}
data

{'姓': ['贾', '贾', '张'], '名': ['小武', '小久', '小鸭́'], '民族': ['汉', '汉', '汉'], '年龄': [3, 1, None]}

df = pd.DataFrame(data, columns=['姓', '名', '年龄'])
df

-

民族

姓别

年龄

1

小武

3

2

小久

1

3

小鸭

-

文件 I / O

读写 CSV

pd.read_csv('file.csv', header=None, nrows=5)
df.to_csv('myDataFrame.csv')

读写 Excel

pd.read_excel('file.xlsx')
pd.to_excel('dir/myDataFrame.xlsx', sheet_name='Sheet1')
xlsx = pd.ExcelFile('file.xls')
df = pd.read_excel(xlsx, 'Sheet1')

读取数据库

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
pd.read_sql("SELECT * FROM my_table;", engine)
pd.read_sql_table('my_table', engine)
pd.read_sql_query("SELECT * FROM my_table;", engine)

read_sql() 是 read_sql_table() 和 read_sql_query() 的便捷包装器

pd.to_sql('myDf', engine)

选择

获取

# 获取 1 个数据
s['天']

1

# 获取 DataFrame 的子集
df[1:]

选择,布尔索引 & 设置

位置

按行和列选择单个值

df.iloc[[0], [1]]
df.iat[0, 1]

'小武'

标签

按行和列标签选择单个值

df.loc[0, '姓']

'贾'

df.at[0, '姓']

'贾'

布尔索引

s[~(s > 1)]

天 1 dtype: int64

s[(s < -1) | (s > 2)]

地 3 玄 5 黄 7 dtype: int64

df[df['年龄']>1]

设置

将序列 s 的索引 '宇' 设置为 9

s['宇'] = 9
s

天 1 地 3 玄 5 黄 7 宇 9 dtype: int64

删除(dropping)

从行中删除值(axis = 0)

s.drop(['天', '地'])

玄 5 黄 7 宇 9 dtype: int64

从列中删除值(axis = 1)

df.drop('姓', axis=1)

排序和排名

按轴标签排序

df.sort_index()

按轴的值排序

df.sort_values(by='年龄')

从小到大排序的下标

df.rank()

检索 Series / DataFrame 信息

基本信息

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
                  index=['cobra', 'viper', 'sidewinder'],
                  columns=['max_speed', 'shield'])

(行,列)

df.shape

(3, 2)

描述索引

df.index

Index(['cobra', 'viper', 'sidewinder'], dtype='object')

描述 DataFrame 列信息

df.columns

Index(['max_speed', 'shield'], dtype='object')

DataFrame 信息

df.info()

非 NA 值的数量

df.count()

max_speed 3 shield 3 dtype: int64

摘要

总和

df.sum()

max_speed 12 shield 15 dtype: int64

累积值

df.cumsum()

最小值

df.min()

max_speed 1 shield 2 dtype: int64

最大值

df.max()

max_speed 7 shield 8 dtype: int64

最小索引值

df.idxmin()

max_speed cobra shield cobra dtype: object

最大索引值

df.idxmax()

max_speed sidewinder shield sidewinder dtype: object

摘要统计

df.describe()

均值

```python
df.mean()

max_speed 4.0 shield 5.0 dtype: float64

中位数

df.median()

max_speed 4.0 shield 5.0 dtype: float64

应用函数

f = lambda x: x*2

应用函数

df.apply(f)

按元素应用函数

df.applymap(f)

数据对齐

内部数据对齐

值 NA 在不重叠的索引中引入

s3 = pd.Series([7, -2, 3], index=['玄', '黄', '宇'])
s + s3

地 NaN 天 NaN 宇 12.0 玄 12.0 黄 5.0 dtype: float64

填充方法的算术运算

借助填充方法自行完成内部数据对齐

s.add(s3, fill_value=0)

地 3.0 天 1.0 宇 12.0 玄 12.0 黄 5.0 dtype: float64

s.sub(s3, fill_value=2)

地 1.0 天 -1.0 宇 6.0 玄 -2.0 黄 9.0 dtype: float64

s.div(s3, fill_value=4)

地 0.750000 天 0.250000 宇 3.000000 玄 0.714286 黄 -3.500000 dtype: float64

s.mul(s3, fill_value=3)

地 9.0 天 3.0 宇 27.0 玄 35.0 黄 -14.0 dtype: float64

ipynb 请查看:https://github.com/iOSDevLog/AIDevLog/blob/master/Python%20%E5%9F%BA%E7%A1%80/PandasBasic.ipynb

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CentOS LNMP (Linux+Nginx+MariaDB+PHP)

    安装目录: /usr/local/openresty/ html 目录:/usr/local/openresty/nginx/html

    iOSDevLog
  • 在Bitbucket Cloud上发布网站

    现在可以在yoursitename.bitbucket.io上访问Bitbucket Cloud上托管的静态站点。除了将链接更新为指向https://yours...

    iOSDevLog
  • iData iOS 开发之 1: API 测试

    https://www.kancloud.cn/idata/idata/435827

    iOSDevLog
  • Pandas模块,我觉得掌握这些就够用了!

    经常会有一些朋友问我类似的问题,“哎呀,这个数据该怎么处理啊,我希望结果是这样的,麻烦刘老师帮我看看。”、“刘老师,怎么把一列数据拆分出来,并取出最后一个拆分结...

    数据森麟
  • Pandas模块,我觉得掌握这些就够用了!

    经常会有一些朋友问我类似的问题,“哎呀,这个数据该怎么处理啊,我希望结果是这样的,麻烦刘老师帮我看看。”、“刘老师,怎么把一列数据拆分出来,并取出最后一个拆分结...

    1480
  • 利用Python进行数据分析_Panda

    申明:本系列文章是自己在学习《利用Python进行数据分析》这本书的过程中,为了方便后期自己巩固知识而整理。

    py3study
  • 99%的人都不知道的pandas骚操作(二)

    上一篇介绍了accessor的用法,很多朋友看过后都恍然大悟,原来我们常用的str也只是其中之一而已。本篇我们将继续介绍几个pandas的骚操作。

    用户2769421
  • pandas中的数值计算及统计基础

    py3study
  • 如何为 DNS 服务器添加反向解析记录

    前一篇文章我们介绍了如何快速搭建 DNS 服务器,本文将向大家介绍如何向 DNS 服务器添加反向解析记录,支持将指定的 IP 解析到对应的域名。

    9527
  • jedisLock—redis分布式锁实现

      管理后台的部署架构(多台tomcat服务器+redis【多台tomcat服务器访问一台redis】+mysql【多台tomcat服务器访问一台服务器上的my...

    林老师带你学编程

扫码关注云+社区

领取腾讯云代金券