Pandas 操作

一、Series的创建:

pd.Series([ 数据 ])

In [17]: import pandas as pd

In [18]: import numpy as np

In [19]: s = pd.Series([1,1,1,1,np.nan])

In [20]: s
Out[20]:
0    1.0
1    1.0
2    1.0
3    1.0
4    NaN
dtype: float64

二、生成DataFrame

1,Numpy 产生随机数组

In [17]: np.random.rand(5,5)  # 生成5 x 5 的数组
Out[17]:
array([[ 0.67935636,  0.75784959,  0.85428253,  0.73356   ,  0.60555467],
       [ 0.93576592,  0.81445114,  0.18213442,  0.4784346 ,  0.14720462],
       [ 0.57083505,  0.62618339,  0.13534874,  0.19513107,  0.7190744 ],
       [ 0.66931535,  0.50888897,  0.00685189,  0.16140523,  0.68407209],
       [ 0.91081342,  0.67702016,  0.32823171,  0.43670926,  0.98735408]])

2,Pandas 生成连续日期

In [18]: pd.date_range(‘20180101‘,periods=6)
Out[18]:
DatetimeIndex([‘2018-01-01‘, ‘2018-01-02‘, ‘2018-01-03‘, ‘2018-01-04‘,
               ‘2018-01-05‘, ‘2018-01-06‘],
              dtype=‘datetime64[ns]‘, freq=‘D‘)

3,生成带index和columns的DataFrame

In [19]: df = pd.DataFrame(np.random.rand(6,4),index=pd.date_range(‘20180101‘,periods=6),columns=[‘a‘,‘b‘,‘c‘,‘d‘]) # 第一个参数为数据,第二个参数index为索引,第三个参数columns为列名

In [20]: df
Out[20]:
                   a         b         c         d
2018-01-01  0.202113  0.205094  0.456936  0.535537
2018-01-02  0.912747  0.812827  0.856495  0.872259
2018-01-03  0.303067  0.832261  0.279915  0.297952
2018-01-04  0.480393  0.315161  0.333675  0.072642
2018-01-05  0.965324  0.561682  0.565189  0.503561
2018-01-06  0.959792  0.227326  0.970319  0.757595

4,Pandas 生成二维数组和一维数组

In [6]: arr = np.arange(12) # 一维数组
In [7]: arr
Out[7]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

 In [9]: arr = np.arange(12).reshape(3,4)  # 二维数组

 In [10]: arr
 Out[10]:
 array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])

5,生成一个没有定义index和column的DataFrame (如果没有定义,index和column则为数字)

In [11]: df = pd.DataFrame(arr) # 直接将二维数组传入即可

In [12]: df
Out[12]:
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

6,利用数组生成DataFrame

In [13]: arr = {"a":[1]*3,"b":[2]*3,"c":[3]*3} # 定义数组
In [14]: arr
Out[14]: {‘a‘: [1, 1, 1], ‘b‘: [2, 2, 2], ‘c‘: [3, 3, 3]}

#生成DataFrame
In [16]: df = pd.DataFrame(arr)
In [17]:
In [17]: df
Out[17]:
   a  b  c
0  1  2  3
1  1  2  3
2  1  2  3

三、DataFrame的基本操作

1,取某一列

In [20]: df[‘a‘]
Out[20]:
0    1
1    1
2    1
Name: a, dtype: int64

2,查看数组类型dtypes

In [21]: df.dtypes
Out[21]:
a    int64
b    int64
c    int64
dtype: object

3,查看索引index

In [23]: df.index
Out[23]: RangeIndex(start=0, stop=3, step=1)

4,查看列cloumns

In [24]: df.columns
Out[24]: Index([u‘a‘, u‘b‘, u‘c‘], dtype=‘object‘)

5,查看值values

In [25]: df.values
Out[25]:
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]], dtype=int64)

6,查看数据的总结describe

In [32]: df.describe()
Out[32]:
         a    b    c
count  3.0  3.0  3.0
mean   1.0  2.0  3.0
std    0.0  0.0  0.0
min    1.0  2.0  3.0
25%    1.0  2.0  3.0
50%    1.0  2.0  3.0
75%    1.0  2.0  3.0
max    1.0  2.0  3.0

7,翻转数据 transpose、T

In [37]: df.transpose()
Out[37]:
   0  1  2
a  1  1  1
b  2  2  2
c  3  3  3

In [38]: df.T
Out[38]:
   0  1  2
a  1  1  1
b  2  2  2
c  3  3  3

四,对DataFrame的索引(index)进行排序

df.sort_index(axis=0,ascending=True) #axis为0代表对行排序1代表对列。ascending为True代表正序,False代表反序

# 行,正序
In [43]: df.sort_index(axis=0,ascending=True)
Out[43]:
   a  b  c
0  1  2  3
1  1  2  3
2  1  2  3

# 行,反序

In [44]: df.sort_index(axis=0,ascending=False)
Out[44]:
   a  b  c
2  1  2  3
1  1  2  3
0  1  2  3

#列,正序

In [46]: df.sort_index(axis=1,ascending=True)
Out[46]:
   a  b  c
0  1  2  3
1  1  2  3
2  1  2  3

#列,反序

In [45]: df.sort_index(axis=1,ascending=False)
Out[45]:
   c  b  a
0  3  2  1
1  3  2  1
2  3  2  1

五,对DataFrame数据进行选择

1,简单筛选 df.A = df[‘A‘]

# 生成一个DataFrameIn [58]: dates = pd.date_range(‘20130101‘, periods=6)
    ...: df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=[‘A‘,‘B‘,‘C‘,‘D‘])
    ...:
In [63]: df.A
Out[63]:
2013-01-01     0
2013-01-02     4
2013-01-03     8
2013-01-04    12
2013-01-05    16
2013-01-06    20
Freq: D, Name: A, dtype: int32

In [64]: df[‘A‘]
Out[64]:
2013-01-01     0
2013-01-02     4
2013-01-03     8
2013-01-04    12
2013-01-05    16
2013-01-06    20
Freq: D, Name: A, dtype: int32

2,按索引或者索引下标进行筛选

In [60]: df[0:3]  # 按照索引进行筛选
Out[60]:
            A  B   C   D
2013-01-01  0  1   2   3
2013-01-02  4  5   6   7
2013-01-03  8  9  10  11

In [61]: df[‘20130101‘:‘20130102‘]  # 按照索引下标值进行筛选
Out[61]:
            A  B  C  D
2013-01-01  0  1  2  3
2013-01-02  4  5  6  7

3,使用loc进行标签筛选 df.loc[‘行‘,[列]]

列的格式为list,其中 : 代表全部。行只能筛选一行,列能筛选多列

# 只有行In [66]: df.loc[‘20130102‘]  # 只有一个参数,默认是对行
Out[66]:
A    4
B    5
C    6
D    7
Name: 2013-01-02 00:00:00, dtype: int32

# 只有列
In [71]: df.loc[:,[‘A‘]]
Out[71]:
             A
2013-01-01   0
2013-01-02   4
2013-01-03   8
2013-01-04  12
2013-01-05  16
2013-01-06  20
# 全部行,特定列
In [72]: df.loc[:,[‘A‘,‘B‘,‘C‘]]
Out[72]:
             A   B   C
2013-01-01   0   1   2
2013-01-02   4   5   6
2013-01-03   8   9  10
2013-01-04  12  13  14
2013-01-05  16  17  18
2013-01-06  20  21  22
# 全部列,特定行(只能筛选一行)
In [81]: df.loc[‘20130101‘,:]
Out[81]:
A    0
B    1
C    2
D    3
Name: 2013-01-01 00:00:00, dtype: int32
# 特定列,特定行
In [82]: df.loc[‘20130101‘,[‘A‘,‘B‘,‘C‘]]
Out[82]:
A    0
B    1
C    2
Name: 2013-01-01 00:00:00, dtype: int32

4,使用iloc进行位置筛选 df.loc[[行],[列]]

行和列的格式为list,其中 : 代表全部。这里的取值并不是list中的范围,例如 [0:5] 并不代表第0条到第5条,而是代表第0条和第5条

In [90]: df.iloc[[0,1],[0,3]]
Out[90]:
            A  D
2013-01-01  0  3
2013-01-02  4  7

In [91]: df.iloc[[1],[0,3]]
Out[91]:
            A  D
2013-01-02  4  7

In [92]: df.iloc[[2,4],[0,3]]
Out[92]:
             A   D
2013-01-03   8  11
2013-01-05  16  19
时间: 2024-11-06 09:30:37

Pandas 操作的相关文章

pandas操作行集锦

pandas移花接木 数据准备两表: 我们接下来要进行的操作: 增 将两表进行合并 # 把两张表合并,但是这样有问题,索引会重复的进行0-19 students = page_001.append(page_002) students # 我们需要做一步操作,将索引全部重新排列,reset_index同时还要将原索引删除drop=True,这样就OK students.reset_index(drop=True) 追加一行数据到最后 # 这里必须开启ignore_index告诉pandas直接给

整理pandas操作

本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filename):从CSV文件导入数据 pd.read_table(filename):从限定分隔符的文本文件导入数据 pd.read_excel(filename):从Excel文件导入数据 pd.read_sql(query, connection_object):从SQL表/库导入数据 pd.read_json(json_st

pandas操作Series和DataFrame的基本功能

reindex:重新索引 pandas对象有一个重要的方法reindex,作用:创建一个适应新索引的新对象 以Series为例 1 >>> series_obj = Series([4.5,1.3,5,-5.5],index=('a','b','c','d')) 2 >>> series_obj 3 a 4.5 4 b 1.3 5 c 5.0 6 d -5.5 7 dtype: float64 8 >>> obj2 = series_obj.reind

Python openpyxl、pandas操作Excel方法简介与具体实例

本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据分析模块Pandas也提供pandas.read_excel.pandas.DataFrame.to_excel功能. 那么openpyxl的库有哪些优缺点呢: 优势: 1.openpyxl提供对pandas的dataframe对象完美支持: 2.openpyxl支持后台静默打开excel文件: 3

pandas操作速查表

准备工作 import numpy as np import pandas as pd 倒入文件或创建一个数据表 df = pd.DataFrame(pd.read_csv('name.csv',header=1)) df = pd.DataFrame(pd.read_excel('name.xlsx')) pd.read_table(filename)# 从限定分隔符的文本文件导入数据 pd.read_excel(filename)# 从Excel文件导入数据 pd.read_sql(quer

使用pandas操作MySQL数据库

转载(有添加.修改)作者:但盼风雨来_jc链接:https://www.jianshu.com/p/238a13995b2b來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写.首先我们需要了解点ORM方面的知识 ORM技术   对象关系映射技术,即ORM(Object-Relational Mapping)技术,指的是把关系数据库的表结构映射到对象上,通过使用描述对象和数据库之间映射的元数

Pandas操作excel

读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_col = None,usecols = None,squeeze = False,dtype = None, ...) io:字符串,文件的路径对象. sheet_name:None.string.int.字符串列表或整数列表,默认为0.字符串用于工作表名称,整数用于零索引工作表位置,字符串列表或整数

pandas操作mysql从放弃到入门

目录 相关帮助文档 一.如何读取数据库-read_sql 二.如何筛选数据 三.如何连表-merge 四.如何删除一行或一列-drop 五.如何分组统计-groupyby 六.如何排序-sort_values/sort_index 七.如何重建索引-groupby(as_index=False)/reset_index 八.如何翻转dataframe-T 九.如何重命名列-rename 十.如何强制转换类型-astype 十一.groupby只有一列时如何count-size 十二.如何操作时间

使用pandas操作mysql数据

代码如下: #导入 import pymysql import pandas as pd from sqlalchemy import create_engine #连接mysql engine = create_engine('mysql+pymysql://root:@localhost:3306/lg') #查询 sql = ''' select LGL_LSKU,LGL_NAME_LOCAL,LGL_RAW_ADDRESS from kfc limit 5; ''' df = pd.re