Pandas是基于NumPy的另一个python数据分析库,提供了一套名为DataFrame的数据结构,实现高性能数据操作和分析。

Pandas的主要特点:

快速高效的DataFrame对象,具有默认和自定义的索引;

将数据从不同文件格式加载到内存中的数据对象的工具;

丢失数据的数据对齐和综合处理;

重组和摆动日期集;

基于标签的切片,索引和大数据集的子集;

可以删除或插入来自数据结构的列;

按数据分组进行聚合和转换;

高性能合并和数据加入;

时间序列功能;

以下为代码笔记:

# 导入pandas包

import pandas as pd

#1 DataFrame基本操作

# 创建6*4的随机矩阵

df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))

df.dtypes #类型

df.head(3) #前三行

df.tail(5) #后五行

df.describe() #描述性统计

df.T #转置

df.sort(columns='C') #按C列排序

df.iloc[1:3, :] #数据切片

#2 筛选数据

df[(df.D>0) & (df.C<0)] #多个关系筛选

df[['A','B']][(df.D>0) & (df.C<0)] #只返回特定列结果

#3 读取csv数据

os.getcwd() #获取当前工作目录

df = pd.read_csv('self/…', engine='python', encoding='gbk') #读取文件

#4 数据选择

df[u'专业名称' u'学号'][:3] #前三行数据

#5 数据统计

counts=df[u'专业名称'].value_counts() #结果会打印出选择列及对应值

#6 数据分组

#创建数据

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B': ['one','one','three','one','two','one','one','three'], 'C':np.random.randn(8), 'D':np.random.randn(8)})

#分组

grouped = df.groupby(['A', 'B'])

print (gourped.last()) #打印最后一行

#按函数分组

def get_type(letter):

if letter.lower() in 'abem':

return 'vowel'

else:

return 'consonant'

grouped = df.groupby(get_type, axis = 1)

print (grouped.first())

#7 transformation 标准化数据

#将一列数据转换为以1为标准差以0为平均数的标准分数

#创建series对象,以时间戳为index

index = pd.date_range('1/1/2014', periods=100)

ts=pd.Series(np.random.normal(0.5, 2, 100),index)

key = lambda x: x.month #按月分组

zscore = lambda x: (x-x.mean())/x.std()

transformed =ts.groupby(key).transform(zscore)

print(transformed.groupby(key).mean())

print(transformed.groupby(key).std())

#8 agg分组多种计算

#先创建一个DataFrame

import numpy as np

import pandas.util.testing as tm

colors=tm.np.random.choice(['red','green'],size=10)

foods=tm.np.random.choice(['egg','ham'],size=10)

index=pd.MultiIndex.from_arrays([colors, foods],names=['color','food'])

df=pd.DataFrame(np.random.randn(10,2), index=index)

df.columns = ['a','b']

grouped = df.groupby(level='color')

#计算各组的总数,平均数,标准差

print (grouped.agg([np.sum, np.mean, np.std]))

grouped['a'].agg([np.sum, np.me.. #针对a列计算

grouped['a'].agg({'SUM result': np.sum, 'Mean result': np.mean ..}) #自设列标题

grouped['a'].agg({'lambda': lambda x: np.mean(abs(x))}) #通过lambda匿名函数

#9 按月分组

key = lambda x:x.month

grouped = ts.groupby(key)

df=pd.DataFrame({'date':date, 'data':data})

print(df.groupby(df['date'].apply(lambda x:x.month))) #按日期格式分组并设置列名

#10 字符串日期转Date

date_stngs = (…)

a = pd.Series([pd.to_datetime(date) for date in date_stngs])

#11 移动、复制、删除列

df['c'] = pd.Series(np.random.randn(10), index=df.index) #增加列

df.insert(1, 'e', df['a']) #插入列 (位置,列名,值)

df = df.drop(['a', 'b'], axis = 1) #丢到某列

b = df.pop('b')

df.insert(0, 'b', b) #移动列

#12 Series 创建带索引数据

ser1 = Series([1,2,3,4]) #默认索引

ser2 = Series(range(4),index = ["a","b","c","d"]) #自定义索引

ser3 = Series({'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}) #用字典创建

可以通过索引访问值,也可通过ser.values/index 获取所有值/索引

#13 字符串操作

s = pd.Series(list('ABCDEF'))

print (s)

#同普通字符串操作一样

s.str.upper()

s.str.len()

s.str.split('_')

s.str.replace('^a|b$', 'X', case=False)

s.str.extract('()()') #字符串提取,每个括号代表一个条件

s.str.contains(条件, na = False) #包含字符串

s.str.match(条件,as_indexer=False) #匹配字符串

startswith, endwith…

#14 读写sql数据库

#read_sql接受两个参数,一个是sql语句;一个是con(数据库连接)、read_sql直接返回一个DataFrame对象

con = sqlite3.connect("xx.sqlite")

sql = "select * from weather_2012 LIMIT 3"

df = pd.read_sql(sql, con, index_col='id') #将index_col值设置为列表

#写数据

con2 = sqlite3.connect("xx.sqlite")

con2.execute(“drop table if exists weather_2012”)

pd.io.sql.write_frame(df, “weather_2012”, con2)

#15 广播

对矩阵中每个元素执行相同的操作

df = pd.DataFrame({'one':pd.Series(np.random.randn(4), index=list('abcd'))})

df['two']=1

df['thr']=2

#得到一行和一列

row=df.ix[1] #ix[1, :-1]

columns = df['two']

#将df中每一行与row做减法

print(df.sub(row, axis='columns')) #axis指定广播的纬度

#16 缺失值计算

#简单运算中,运算后相应位置也是缺失的;

df.fillna(0) #0值填充,也可以用字符串等填充

df.fillna(method='bfill', limit=1) #后面值填充

df.fillna(df.mean()) #均值填充

df.fillna(df.mean()['one', 'two']) #指定列填充

df.interpolate() #插值法估计缺失值 默认直线 #method='values'/'time', 会根据df的类型来自动估计

df.dropna(axis =0) #删除缺失值的行 axis=1为删除列

#17 值替换

ser = pd.Series([0,1 …])

ser.replace(0, 6)

ser.replace({1:11, 2:12}) #字典映射

#同样适用于df对象

df[['a', 'b']].replace(2, 10) #指定多列进行替换

#若多个列中不同的值都要替换为一个相同的值,可以使用字典的方法表示所有需要被替换的值:

df.replace({'a':0, 'b':5}, np.nan)

备注:目前写博客是为了进行知识和笔记梳理。博客本身可能还存在着一些错误,如有发现,请求斧正,谢谢。

python数据包pandas_python | 数据分析(二)- Pandas数据包相关推荐

  1. python txt文件读写 pandas_Python数据分析之Pandas读写外部数据文件!

    阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 3 excel文件 3.1 读取数据 3.2 写入数据 4 mysql数据库 5 mongodb数据库 1 引言 ...

  2. Pandas数据分析14——pandas数据框的多层索引

    参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas数据框针对高维数据,也有多层索引的办法去应对.多层数据一般长这个样子 可以看到AB两大列,下面又有xy两 ...

  3. python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

    1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...

  4. python中df是什么_python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]...

    1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...

  5. 【python数据分析】pandas数据合并

    pandas数据合并 使用contact,append,merge完成数据集合并 自己学习用,欢迎大佬指正. 1.concat pd.concat()可以合并series和DataFrame对象,默认 ...

  6. Pandas数据分析15——pandas数据透视表和交叉表

    参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对数据框也可以像excel一样进行数据透视表整合之类的操作.主要是针对分类数据进行操作,还可以计算数值型 ...

  7. python数据分析pandas_Python数据分析之pandas学习(基础操作)

    一.pandas数据结构介绍 在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame.Series类似于numpy中的一维数组, 除了通吃一维数组可用的函数或方法,而且 ...

  8. Shiny平台构建与R包开发(二)——数据输入

    作为Shiny平台构建与R包开发教程的第二小节,本节向读者介绍如何利用Shiny server处理用户输入的各种信息.这些信息既包括用户向Shiny上传的数据集,也包括用户对Shiny页面的各种控件( ...

  9. 【Python百日基础系列】Day12 - Pandas 数据读取与存储

    文章目录 一.官网用户指南 二.数据读取 2.1 查看当前目录 2.2 最简单的读取csv和excel文件 2.3 读取前20行 2.4 跳过前20行 2.5 读取全部偶数行/奇数行 2.6 按列号和 ...

  10. 【Class 20】【实例】python 爬虫简单案例实现二---将数据保存为CSV文件

    摘抄一位网友的写入和读取csv的代码: #输出数据写入CSV文件 import csv data = [("Mike", "male", 24),(" ...

最新文章

  1. PHP MongoDB 扩展安装配置
  2. C# Get network adapter info.
  3. 数据结构:O(nlogn)算法
  4. 关于python pdb的描述_The python debugger(PDB)的简介
  5. MySQL注入中load_file()函数的应用
  6. 上某些网站的时候要小心,不要以为 HTTPS 就安全了
  7. 软件加入使用时间_Mac实用菜单栏管理小工具 Bartender 3 | Mac软件天堂
  8. 资产分池中的量化实战
  9. php删除英文链接词,英语写作词汇大全:转折连接词
  10. Hibernate应用中Java对象的状态
  11. oracle中md5加密解密_Oracle中的MD5加密详解
  12. 【U盘量产工具】windows无法完成格式化——芯邦主控CBM2098S
  13. 微信小程序自定义页面标题
  14. 华为路由器6to4隧道原理及配置
  15. 教育直播APP开发,在线教育系统开发,主要功能
  16. wps怎么将图片嵌入文字里_在WPS文字中插入图片
  17. 删除360天擎(企业版)---不知道密码情况下
  18. linux下创建php文档,linux新建文件有哪些方法
  19. npm install xxx 出现Unexpected token < in
  20. html制作单选网页程序,网页制作基础:单选框和复选框的应用_html

热门文章

  1. 阶段3 3.SpringMVC·_05.文件上传_4 文件上传之Springmvc方式上传代码
  2. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_13_注解_JDK内置注解...
  3. javascript 下 function 和 Function的区别
  4. oracle的loop等循环语句的几个用法小例子[转]
  5. Spring mvc+ Hibernate的基础dao类。
  6. 统计一句话中每个字母出现的次数
  7. 如何使用GetParent来得到父对话框的指针
  8. 使用curses管理基于文本的屏幕--(三)
  9. 雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮
  10. 比较两个时间的大小 举例:CompareDate(12:00,11:15)