pandas的功能非常强大,支持类似与sql的数据增、删、查、改,并且带有丰富的数据处理函数;

支持时间序列分析功能;支持灵活处理缺失数据等。
pandas的基本数据结构是Series和DataFrame
Series是序列,类似一维数组;
DataFrame相当于一张二维表格,类似二维数组,它的每一列都是一个Series。
为了定位Series中的元素,Pandas提供了Index对象,每个Series都会带有一个对应的
Index,用来标记不同的元素,Index的内容不一定是数字,也可以是字母、中文等,它类似于sql中的
主键。
 
DataFrame相当于多个带有同样Index的Series的组合(本质是Series的容器),每个Series都带
有唯一的表头,用来标识不同的Series。
>>> import pandas as pd 
>>> s=pd.Series([1,2,3],index=['a','b','c'])
>>> s
a    1
b    2
c    3
>>> d=pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c'])
>>> d.head()
   a  b  c
0  1  2  3
1  4  5  6
>>> d.describe()
             a        b        c
count  2.00000  2.00000  2.00000
mean   2.50000  3.50000  4.50000
std    2.12132  2.12132  2.12132
min    1.00000  2.00000  3.00000
25%    1.75000  2.75000  3.75000
50%    2.50000  3.50000  4.50000
75%    3.25000  4.25000  5.25000
max    4.00000  5.00000  6.00000
>>> pd.read_excel('C:\\Users\someone\Desktop\data.xlsx','Sheet1')
               id       int  no    4       5         6   7    8
0       elec_code   varchar  no   50    电子表码   varchar  no  100
1         user_id   varchar  no   50    用户编号   varchar  no  100
2       user_name   varchar  no   50    用户名称   varchar  no  100
 
写入excel
with pd.ExcelWriter('shanghai_%d.xlsx'%iii) as writer:
for i,j in dddit:
j.to_excel(writer,sheet_name=str(i))
#j 为DataFrame类型数据
 
定位dataframe中元素
In [14]: df.head()
Out[14]:
A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-05 -0.424972 0.567020 0.276232 -1.087401

dates=['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06']

df[:]  通过【】切片列 ,axis=0                 左闭右开
Out[24]:
A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804 In [25]: df['20130102':'20130104'] 两边包含
Out[25]:
A B C D
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
 df['A'] 选择单个列,等同于df.A, 单列的数据类型为series
Out[23]:
2013-01-01 0.469112
2013-01-02 1.212112
2013-01-03 -0.861849
2013-01-04 0.721555
2013-01-05 -0.424972
2013-01-06 -0.673690
Freq: D, Name: A, dtype: float64
df.loc[] 根据数据的索引值(标签) 定位数据

df.loc[dates[0]]
df.loc[:,['A','B']]
df.loc['20130102':'20130104',['A','B']]
                   A         B
2013-01-02 1.212112 -0.173215
2013-01-03 -0.861849 -2.104569
2013-01-04 0.721555 -0.706771
df.loc['20130102',['A','B']]
df.loc[dates[0],'A']
Out[30]: 0.4691122
df.iloc[]  根据数据的位置序号定位数据,而不是索引的值
当入参为1个时,表示纵轴序号值为 y 的行,入参为两个时(x,y),表示横轴上序号为x,纵轴上序号为y的子集
分号 :同列表,左闭右开
d.iloc[1:2,[1,2]]   
df.iloc[3:5,0:2]
df.iloc[1:3,:]
df.iloc[1,1]
df.iloc[[1,2,4],[0,2]]  返回行号为1,2,4,列号为0,2的子集
df.iloc[3]  返回序号值为3的行

d.index 返回索引明细
d.dtypes 返回各列(column)的类型及名称

填充空值
d=d.fillna('_')将NA以'_'值替换

排序

通过索引排序,默认是纵轴索引值,升序

df.sort_index(axis=0,ascending=True)

通过数值排序

df.sort_values(by,axis=0,ascending=True)

by可以是单个列标签,也可以是多个列标签的列表

 
合并DataFrame
 
merge 原理像sql 的两表关联 join
pd1=pd.DataFrame(list1,columns=['userid',])
pd2=pd.DataFrame(list2,columns=['r','userid2','filialename','username','useraddress',])
pd3=pd.merge(pd1,pd2,how='left',left_on='userid',right_on='userid2')
how,连接方式'left','right','inner'
使用左边的userid列和右边的userid2列作为连接键即userid=userid2
根据某列的不同的值,创建出另一对应值的列,可用merge方法,连接两个df
 
concat 直接拼接合并
dfs=[pd1,pd2,pd3]
datas=pd.concat(dfs,axis=1)
axis为1时,横向连接 datas.columns  为 ['userid','r','userid2','filialename','username','useraddress','userid','r','userid2','filialename','username','useraddress',]
axis为0时,纵向连接 相当于union all
 
统计 频率数
s=datas['filialename']
s.value_counts()

groupby,分组

类似sql的group by ,可以根据多个字段group by ,用列表
grouped=data.groupby('Fmfiliale')
通过多字段分组后求平均值
grouped2=df.groupby(['nameid','site','recordat']).mean()
#默认是 axis=0,即纵向分组
print(grouped.groups)
#结果如下:
#{'118.190.41.176:water': Int64Index([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
#            17, 18, 19, 20, 21, 22, 23, 24],
#            dtype='int64'),
# '120.237.48.43:water': Int64Index([25], dtype='int64'),
# '222.245.76.42:water': Int64Index([26, 27, 28, 29], dtype='int64')}
for name,group in grouped:
print(name,grouped)
返回的是(str,pd)类型数据,上例中的name值为该组的Fmfiliale值。
对于空值(#NA)groupby会自动排除这一条数据

df2=grouped2.reset_index()                                                                                            将分组后的索引重新设置为数据

list_data=df2.values.tolist()                                                                                             将dataframe类型转化为list

df_data['recordat'].apply(lambda x:x.strftime('%Y-%m-%d'))                                        将函数应用于df的某一列column

读取excel详细入参说明

pandas.read_excel(iosheetname=0header=0skiprows=Noneskip_footer=0index_col=None,parse_cols=Noneparse_dates=Falsedate_parser=Nonena_values=Nonethousands=Noneconvert_float=True,has_index_names=Noneconverters=Noneengine=None**kwds)

Read an Excel table into a pandas DataFrame

Parameters:

io : string, file-like object, pandas ExcelFile, or xlrd workbook.

The string could be a URL. Valid URL schemes include http, ftp, s3, and file. For file URLs, a host is expected. For instance, a local file could befile://localhost/path/to/workbook.xlsx

sheetname : string, int, mixed list of strings/ints, or None, default 0  表示读取哪几个工作簿,从0开始

Strings are used for sheet names, Integers are used in zero-indexed sheet positions.

Lists of strings/integers are used to request multiple sheets.

Specify None to get all sheets.

str|int -> DataFrame is returned. list|None -> Dict of DataFrames is returned, with keys representing sheets.

Available Cases

  • Defaults to 0 -> 1st sheet as a DataFrame
  • 1 -> 2nd sheet as a DataFrame
  • “Sheet1” -> 1st sheet as a DataFrame
  • [0,1,”Sheet5”] -> 1st, 2nd & 5th sheet as a dictionary of DataFrames
  • None -> All sheets as a dictionary of DataFrames

header : int, list of ints, default 0  将某一行设置为标题行,计数从0开始,在跳过行之后重新计数。如skiprows=2,header=2,则将取excel中索引(从0开始计数)为4的行为header,即pd.DataFrame的columns值

                                                表示去掉头两行数据以剩下的数据的索引数(从0开始)为2的行作为header

Row (0-indexed) to use for the column labels of the parsed DataFrame. If a list of integers is passed those row positions will be combined into a MultiIndex

skiprows : list-like  从开头起,跳过哪几行,默认值为None,等同于0 .【 如果取值skiprows=2,则将从excel中索引数(从0开始计数)为2(包含2)的row处开始读取】

Rows to skip at the beginning (0-indexed)

skip_footer : int, default 0。 从尾端起,跳过哪几行, 如等于2,则将跳过最后两行以倒数第三行作为最后一行

Rows at the end to skip (0-indexed)

index_col : int, list of ints, default None  将某一列设置为索引,从0开始计数

Column (0-indexed) to use as the row labels of the DataFrame. Pass None if there is no such column. If a list is passed, those columns will be combined into a MultiIndex

converters : dict, default None 以列名为键,函数为值,对该列的值应用该函数,取结果

Dict of functions for converting values in certain columns. Keys can either be integers or column labels, values are functions that take one input argument, the Excel cell content, and return the transformed content.

parse_cols : int or list, default None 解析哪几列,'A:E'表示解析A列到E列(含)

  • If None then parse all columns,
  • If int then indicates last column to be parsed
  • If list of ints then indicates list of column numbers to be parsed
  • If string then indicates comma separated list of column names and column ranges (e.g. “A:E” or “A,C,E:F”)

na_values : list-like, default None  列表,如遇到列表中的值,将其读为na

List of additional strings to recognize as NA/NaN

thousands : str, default None

Thousands separator for parsing string columns to numeric. Note that this parameter is only necessary for columns stored as TEXT in Excel, any numeric columns will automatically be parsed, regardless of display format.

keep_default_na : bool, default True

If na_values are specified and keep_default_na is False the default NaN values are overridden, otherwise they’re appended to

verbose : boolean, default False

Indicate number of NA values placed in non-numeric columns

engine: string, default None

If io is not a buffer or path, this must be set to identify io. Acceptable values are None or xlrd

convert_float : boolean, default True

convert integral floats to int (i.e., 1.0 –> 1). If False, all numeric data will be read in as floats: Excel stores all numbers as floats internally

has_index_names : boolean, default None

DEPRECATED: for version 0.17+ index names will be automatically inferred based on index_col. To read Excel output from 0.16.2 and prior that had saved index names, use True.

Returns:

parsed : DataFrame or Dict of DataFrames

DataFrame from the passed in Excel file. See notes in sheetname argument for more information on when a Dict of Dataframes is returned.

pandas 常用语句的更多相关文章

  1. Python数据分析与挖掘所需的Pandas常用知识

    Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series ...

  2. 【转载】pandas常用函数

    原文链接:https://www.cnblogs.com/rexyan/p/7975707.html 一.import语句 import pandas as pd import numpy as np ...

  3. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

  4. mysql常用语句总结

    1.创建语句 CREATE DATABASE database_name //创建数据库 //删表 DROP TABLE IF EXISTS `t_social_user_extend`; //建表C ...

  5. JS常用语句

    JavaScript常用语句 1.document.write("");    输出语句 2.JS中的注释为   // 3.传统的HTML文档顺序是:     document-& ...

  6. velocity常用语句速查表

    velocity常用语句 * 变量定义 #set($directoryRoot = "www" ) * #if($!list.size() != 0) //判断list不为空 #f ...

  7. MySQL 常用语句 (汇集)

    原文地址:MySql常用语句作者:wuyanle 一.mysql常用语句 创建,删除和最基本查询: 显示数据库  mysql->show databases; 创建数据库  mysql-> ...

  8. mysql数据库常用语句2

    关于mysql常用语句的整理,上一篇涉及到ddl.dml以及一些简单的查询语句. 1:mysql分页查询 select * from table_name limit 5,10;   从下标为5元素查 ...

  9. mysqldump的常用语句及各参数详解

    mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...

随机推荐

  1. redhat7 防火墙设置

    查看防火墙的状态# firewall-cmd --staterunning # systemctl stop firewalld   //关闭防火墙服务# systemctl start firewa ...

  2. ubuntu 把软件源修改为国内源和更新

    1. 备份原始文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2. 修改文件并添加国内源 vi /etc/apt/sourc ...

  3. POJ 1625 Censored!(AC自动机+高精度+dp)

    http://poj.org/problem?id=1625 题意: 给出一些单词,求长度为m的串不包含这些单词的个数. 思路: 这道题和HDU 2243和POJ 2778是一样的,不同的是这道题不取 ...

  4. python 判断一个数字是否为4的幂

    def is_Power_of_four(n): while n and not (n & 0b11): n >>= ) print(is_Power_of_four()) pri ...

  5. Mutex, semaphore, spinlock

    Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个.一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行. Semaphor ...

  6. [源][osg][osgBullet]osgBullet例子介绍

    1.BasicDemo 基本样例 一个小玩具飞机坠落,一个立方体盒子在转圈 2.centerofmass 质心 3.collision 碰撞检测 这里有一个大神自己改的例子: http://blog. ...

  7. spark必知必会的基本概念

    首先我们从宏观的视角来窥视下大数据技术框架: 图1 大数据技术框架 从图1可以看出,数据源-数据收集-数据存储-资源管理,这是我们进行数据分析和处理的基本;图中的计算框架包括批处理.交互式分析和流处理 ...

  8. java.lang.NoSuchMethodError问题处理

    出现这个问题一般是jar包冲突了,我找了很久没找到是哪个jar冲突了.最后用下面的这段代码,找到是哪个jar冲突了 /** * find jar file */ String LOCATION = & ...

  9. Python3 基本语法学习

    1.查看Python版本及打印“Hellow World!”: 需要注意的是:在打印“Hello World”之前一定要先执行 python,否则会报无法 “无法初始化设备 PRN”,如图: 2.查看 ...

  10. [转] jquery $.ajax/$(document).ready is not a function的问题

    下午完成了一个模块功能的开发,本来测试好的jquery表单验证怎么也出不来了.打开firebug,看到控制台里赫然提示:$(document).ready is not a function.感觉怪怪 ...