1,创建Series

1.1,通过iterable创建Series

Series接收参数是Iterable,不能是Iterator

pd.Series(Iterable)

可以多加一个index参数,index可以接收Iterator或者Iterable:

>>> pd.Series(('a', 'b'), index=iter(range(2)))
0 a
1 b
dtype: object

1.2,通过字典创建Series

key是索引:

>>> pd.Series({'a':1, 'b':2})
a 1
b 2
dtype: int64

2,Series常用方法

s = pd.Series([1, 2, 3], index=list('abc'))

Series也能像字典那样遍历:

for index, value in s.items():
print(index, value, end=';') # a 1;b 2;c 3;

和字典一样,Series的in测试默认是index操作,如果想对values操作需加上values:

print('a' in s)   # True
print(1 in s.values) # True

获取series的values组成的列表:

print(s.tolist())   # [1, 2, 3]

  

3,创建DataFrame

3.1,通过iterable组成的列表创建DataFrame

[it1, it2, ..., itN],每个it是一行数据,缺省的index, columns是从0开始的int

>>> pd.DataFrame([(1, 2, 3), [4, 5, 6], range(3, 6), 'abc'])
0 1 2
0 1 2 3
1 4 5 6
2 3 4 5
3 a b c

it长度不等时会自动用NaN或者None填充:

>>> pd.DataFrame([(1, 2), [4, 5], range(3, 6), 'abc'])
0 1 2
0 1 2 None
1 4 5 None
2 3 4 5
3 a b c
>>> pd.DataFrame([(1, 2, 3), [4, 5, 6], range(3, 6), 'ab'])
0 1 2
0 1 2 3.0
1 4 5 6.0
2 3 4 5.0
3 a b NaN

指定index和columns:

>>> pd.DataFrame([(1, 2, 3), [4, 5, 6], range(3, 6), 'abc'], index=range(4), columns=list('ABC'))
A B C
1 1 2 3
2 4 5 6
3 3 4 5
4 a b c

3.2,通过numpy矩阵创建DataFrame

np_data = np.random.random((3, 4))
np_data = np.arange(12).reshape(3, 4)
np_data = np.ones((3, 4))
df = pd.DataFrame(np_data)

3.3,通过“一键多值”创建DataFrame

创建dataframe,键是列名:

>>> pd.DataFrame({'a':[1, 2, 3], 'b': [4, 5, 6]})
a b
0 1 4
1 2 5
2 3 6

可以设置index:

>>> pd.DataFrame({'a':[1, 2, 3], 'b': [4, 5, 6]}, index=list('456'))
a b
4 1 4
5 2 5
6 3 6

创建df时更改columns会出问题:

>>> pd.DataFrame({'a':[1, 2, 3], 'b': [4, 5, 6]}, columns=list('AB'))
Empty DataFrame
Columns: [A, B]
Index: []

这种创建方法可以看做是按列创建df,需要事先建很多列表,最后一次性赋给df

3.4,通过“字典列表”创建DataFrame

pd.DataFrame([{'a':1 , 'b': 4},  {'a':2 , 'b': 5},  {'a':3 , 'b': 6}])
a b
0 1 4
1 2 5
2 3 6

这种方法只需要创建一个列表,然后不停往该列表里添加字典即可,推荐!

3.5,df.loc,df.iloc,df.ix等逐行/逐单元格创建DataFrame

事先创建好dataframe,然后用dfdf.loc,df.iloc,df.ix逐行逐单元格增加数据,例如:

df = pd.DataFrame()
for index, item in enumerate(zip('abcde', range(5))):
df.loc[index, 'A'] = item[0]
df.loc[index, 'B'] = item[1]

效率非常低,不推荐

4,SettingWithCopyWarning

对DataFrame的弱引用对象进行拷贝进行赋值会触发SettingWithCopyWarning。

通过bool序列筛选拿到的是dataframe的弱引用对象。对弱引用对象进行修改时,不会影响到原来的dataframe。

>>>df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'))
>>>df1 = df[df['B'] > 2]
>>>df1.is_copy
<weakref at 0x08B5F6C0; to 'DataFrame' at 0x00CC5070>
>>>df1['A'] = 0
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
>>>df1 # df1会改变
A B C D
1 0 5 6 7
2 0 9 10 11
3 0 13 14 15
>>>df # df不会改变
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15

df1是df的弱引用拷贝,对df1进行赋值会触发SettingWithCopyWarning。

如果df1 = df.copy()不会触发该警告。

另外,如果是获取一个列,则拿到的是视图,并不是弱引用,对该视图进行的修改会反映到源dataframe:

>>>df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=list('ABCD'))
>>>a = df['A']
>>>a.loc[1] = 55
>>>a
A B C D
0 0 1 2 3
1 55 5 6 7
2 8 9 10 11

  

Pandas Series和DataFrame的基本概念的更多相关文章

  1. Pandas Series 与 DataFrame 数据创建

    >>> import pandas as pd >>> import numpy as np >>> print(np.__version__), ...

  2. pandas Series和dataframe

    DataFrame是一个表格型数据结构,与Series不同的是,DataFrame可以含有一组或者有序的列,每列可以使不同的值的类型,它可以被看做成Series的字典.

  3. pandas数组(pandas Series)-(2)

    pandas Series 比 numpy array 要强大很多,体现在很多方面 首先, pandas Series 有一些方法,比如: describe 方法可以给出 Series 的一些分析数据 ...

  4. pandas-21 Series和Dataframe的画图方法

    pandas-21 Series和Dataframe的画图方法 ### 前言 在pandas中,无论是series还是dataframe都内置了.plot()方法,可以结合plt.show()进行很方 ...

  5. 02. Pandas 1|数据结构Series、Dataframe

    1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index  . s.values # Series 数据结构 # Series 是带有标签的一 ...

  6. Pandas中Series和DataFrame的索引

    在对Series对象和DataFrame对象进行索引的时候要明确这么一个概念:是使用下标进行索引,还是使用关键字进行索引.比如list进行索引的时候使用的是下标,而dict索引的时候使用的是关键字. ...

  7. Python数据分析-Pandas(Series与DataFrame)

    Pandas介绍: pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的. Pandas的主要功能: 1)具备对其功能的数据结构DataFrame.Series 2)集成时间序 ...

  8. pandas学习series和dataframe基础

    PANDAS 的使用 一.什么是pandas? 1.python Data Analysis Library 或pandas 是基于numpy的一种工具,该工具是为了解决数据分析人物而创建的. 2.p ...

  9. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

随机推荐

  1. Kafka笔记5(内部工作原理)

    集群成员关系: Kafka使用zookeeper维护集群成员信息,每个broker拥有唯一标识符,这个标识符可以在配置文件里指定也可以自动生成,会注册到Zookeeper的/brokers/ids路径 ...

  2. 解决页面使用ifrmae后,在session失效后登录页面在子页面中显示(子窗体出现父窗体)

    在登录页面中添加js判断当前页面是否是父页面,诺不是则父页面跳转至登录页面. <script type="text/javascript"> //解决登录后多个父窗体问 ...

  3. U面经Prepare: Web Address

    题目是给你一堆域名,其中一些是另一些的parent,比如.com是.youku.com的parent,然后.youku.com是.service.youku.com的parent这样,然后再给你一个网 ...

  4. mongodb非关系型数据库

    mongodb非关系型数据库(对象型数据库): 优势:易扩展:灵活的数据模型:大数据量,高性能(读写) 关系型:(一对多.多对多.一对一)扩展性差,大数据下压力大,表结构更改困难(数据小时使用Mysq ...

  5. hibernate框架的简单入门

    1.什么是框架 框架是一个半成品,框架帮我们实现了一部分的功能. 2.使用框架的最大好处 使用框架的最大好处就是,少写一部分代码但仍能实现我们所需要实现的功能. 3.什么是hiberbnate框架 ( ...

  6. Python练习:小程序,列车出票程序

    # 需求:列车某结车厢座位有15行,5列,初始状态均为'有票',当乘客选了座次,下单后,变更为'已售' # 下单时,要显示所有座位的状态(有票or已售) # 下单完毕后,显示下单后的座位状态. lin ...

  7. c++基础 - constexpr

    const expression常量表达式,指值不会改变,并且在编译过程中就能得到计算结果的表达式. 复杂系统难以分辨一个初始值是否是常量表达式,因此提出constexptr以提示编译器,用来验证变量 ...

  8. 2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 20165335

    一.实验目标: 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,get ...

  9. InputStream字节输入流

    1.字节输入流——硬盘中数据写出到内存中供解析使用: 根据文件存储原理,8位二进制组成为一个字节,换算后的数值在0-127则查询ASCII码表,其他则查询系统默认表,如简体中文查询GBK表: 2.Fi ...

  10. 为什么越来越多的人偏爱go语言

    如果你是一个开发者或者程序员,你大概应该听过Go语言或者Golang语言.当然,如果没有听过也没关系,看到这篇文章的同学,就说明你对Golang是关注的,只需要这一点就够了.今天来聊聊关于Golang ...