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

Series

从 numpy 数组创建,并指定索引值

>>> s1 = pd.Series(np.random.rand(4), index=['a', 'b', 'c', 'd'])
>>> s1
a 0.390501
b 0.460804
c 0.176490
d 0.465754
dtype: float64

如果没有指定索引,则默认会创建从 0 到 N-1 的数组作为索引值,这里的 N 是 Series 的长度(即它所包含的元素个数):

>>> s2 = pd.Series(np.random.rand(4))
>>> s2
0 0.210839
1 0.979725
2 0.862411
3 0.780342
dtype: float64

通过索引访问元素

>>> s1['c']
0.176490
>>> # 也可以给元素赋值(修改元素值)
>>> s1['c'] = 3.14
>>> # 同时访问多个元素
>>> s1[['c', 'a', 'b']]
c 3.140000
a 0.390501
b 0.460804
dtype: float64

从字典中创建

字典中的键将会作为索引值,字典中的值将会作为元素值:

>>> s3 = pd.Series({'001': 'Nam', '002': 'Mary', '003': 'Peter'})
>>> s3
001 Nam
002 Mary
003 Peter
dtype: object

从字典中创建 Series 时,也可以自定义索引值或者是添加过滤(即指定只从字典中的某几个键进行创建)。当自定义的索引值不存在于字典中的时,默认会用NaN来作为这个索引的值:

>>> s4 = pd.Series({'001': 'Nam', '002': 'Mary', '003': 'Peter'}, index=['002', '001', '024', '065'])
>>> s4
002 Mary
001 Nam
024 NaN
065 NaN
dtype: object

可以看到,由于传进来的字典中只有001002这两个键,于是创建的 Series 中只保留了这两项,而024065对应的值则是NaN

判断元素是否为空

>>> pd.isnull(s4)
002 False
001 False
024 True
065 True
dtype: bool

从标量值创建

>>> s5 = pd.Series(2.71, index=['x', 'y'])
>>> s5
x 2.71
y 2.71
dtype: float64

可以理解为:指定多少个索引,创建的 Series 中就会包含多少个相同值的元素

相加

这里主要演示的是,Pandas 会自动根据索引来对齐两个 Series 然后再进行数学运算

>>> s6 = pd.Series(np.array([2.71, 3.14]), index=['z', 'y'])
>>> s6
z 2.71
y 3.14
dtype: float64
>>> s5 + s6
x NaN
y 5.85
z NaN
dtype: float64

DataFrame

从字典中创建

>>>  data = {'Year': [2000, 2005, 2010, 2014],
'Median_Age': [24.2, 26.4, 28.5, 30.3],
'Density': [244, 256, 268, 279]}
>>> df1 = pd.DataFrame(data)
>>> df1
Year Median_Age Density
0 2000 24.2 244
1 2005 26.4 256
2 2010 28.5 268
3 2014 30.3 279

默认顺序是传进去的字典的顺序,也可以根据列名(column)进行指定:

>>> df2 = pd.DataFrame(data, columns=['Year', 'Density', 'Median_Age'])
>>> df2
Year Density Median_Age
0 2000 244 24.2
1 2005 256 26.4
2 2010 268 28.5
3 2014 279 30.3

也可以像 Series 那样指定索引值:

>>> df3 = pd.DataFrame(data, columns=['Year', 'Density', 'Median_Age'], index=['a', 'b', 'c', 'd'])
>>> df3.index
Index(['a', 'b', 'c', 'd'], dtype='object')

直接从嵌套的列表中创建

>>> df4 = pd.DataFrame([
['Peter', 16, 'pupil', 'TN', 'M', None],
['Mary', 21, 'student', 'SG', 'F', None],
['Nam', 22, 'student', 'HN', 'M', None],
['Mai', 31, 'nurse', 'SG', 'F', None],
['John', 28, 'laywer', 'SG', 'M', None]],
columns=['name', 'age', 'careet', 'province', 'sex', 'award'])
>>> # 有两种方式可以取到某一列。前提是这个列名不包含空格等特殊字符
>>> # 如果包含空格,则只能使用第二种方式
>>> df4.name
0 Peter
1 Mary
2 Nam
3 Mai
4 John
Name: name, dtype: object
>>> df4['name']
0 Peter
1 Mary
2 Nam
3 Mai
4 John
Name: name, dtype: object
>>> # 修改某一列(整列)的内容
>>> df4['award'] = None
name age careet province sex award
0 Peter 16 pupil TN M None
1 Mary 21 student SG F None
2 Nam 22 student HN M None
3 Mai 31 nurse SG F None
4 John 28 laywer SG M None

从文件中生成

从 CSV 文件中生成

假设有名为 person.csv 的文件内容如下:

name,age,career,province,sex
Peter,16,pupil,TN,M
Mary,21,student,SG,F
Nam,22,student,HN,M
Mai,31,nurse,SG,F
John,28,lawer,SG,M

可使用read_csv来进行读取,直接生成 DataFrame

>>> df4 = pd.read_csv('person.csv')
>>> df4
name age career province sex
0 Peter 16 pupil TN M
1 Mary 21 student SG F
2 Nam 22 student HN M
3 Mai 31 nurse SG F
4 John 28 lawer SG M

0.23.0 版本的 pandas 中的read_csv函数有 49 个参数,分别有不同的用途,比如指定分隔符、指定哪一行做为列名、跳过开头几行、忽略末尾几行等等。可以通过查看文档了解。

Pandas Series 与 DataFrame 数据创建的更多相关文章

  1. Pandas Series和DataFrame的基本概念

    1,创建Series 1.1,通过iterable创建Series Series接收参数是Iterable,不能是Iterator pd.Series(Iterable) 可以多加一个index参数, ...

  2. 吴裕雄--天生自然python学习笔记:pandas模块删除 DataFrame 数据

    Pandas 通过 drop 函数删除 DataFrarne 数据,语法为: 例如,删除陈聪明(行标题)的成绩: import pandas as pd datas = [[65,92,78,83,7 ...

  3. python中pandas里面的dataframe数据的筛选小结

    pandas大家用的都很多,像我这种用的不够熟练,也不够多的就只能做做笔记,尽量留下点东西吧. 筛选行: a. 按照列的条件筛选 df = pandas.DataFrame(...) # suppos ...

  4. Pandas 横向合并DataFrame数据

    需要将两个DataFrame进行横向拼接: 对 A_DataFrame 拼接一列数据: 数据样例如下: 将右侧source_df中的 “$factor” 列拼接到左侧qlib_df中,但左侧数据是分钟 ...

  5. pandas Series和dataframe

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

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

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

  7. pandas-01 Series()的几种创建方法

    pandas-01 Series()的几种创建方法 pandas.Series()的几种创建方法. import numpy as np import pandas as pd # 使用一个列表生成一 ...

  8. python pandas ---Series,DataFrame 创建方法,操作运算操作(赋值,sort,get,del,pop,insert,+,-,*,/)

    pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的, 导入如下: from panda ...

  9. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

随机推荐

  1. WPF TreeView绑定xaml的写法

    方法一 <Window x:Class="TreeViewDemo.MainWindow" xmlns="http://schemas.microsoft.com/ ...

  2. PHP提取字符串中的图片地址

    PHP提取字符串中的图片地址 $str='<p><img border="0" src="upfiles/2009/07/1246430143_1.jp ...

  3. 简洁的导出 datatable到excel,不用组件

    简洁的导出 datatable到excel var lines = new List<string>(); string[] columnNames = dataTable.Columns ...

  4. 起调UWP的几种方法

    原文:起调UWP的几种方法 由于种种原因吧,我需要使用一个WPF程序起调一个UWP程序,下面总结一下,给自己个备份. 启动UWP程序的关键是协议启动 给我们的UWP应用添加一个协议,like this ...

  5. GIS基础软件及操作(七)

    原文 GIS基础软件及操作(七) 练习七.地形分析 地形分析:TIN及DEM的生成及应用 加深对TIN建立过程的原理.方法的认识: 熟练掌握ArcGIS中建立DEM.TIN的技术方法: 结合实际,掌握 ...

  6. VCL比MFC好在哪里

    作者:刘国华链接:https://www.zhihu.com/question/35218485/answer/118472021来源:知乎著作权归作者所有,转载请联系作者获得授权. 从使用感受而言, ...

  7. DLL中类的显式链接(用虚函数进行显式链接)

    DLL的显式链接在某些时候比隐式链接具有更大的灵活性.比如,如果在运行时发现DLL无法找到,程序可以显示一个错误信息并能继续运行.当你想为你的程序提供插件服务时,显式链接也很有用处. 显式链接到全局C ...

  8. 设置windows2008系统缓存大小限制,解决服务器运行久了因物理内存耗尽出僵死(提升权限后,使用SetSystemFileCacheSize API函数,并将此做成了一个Service)

    声明: 找到服务器僵死的原因了,原因是虚拟内存设置小于物理内存. 只要虚拟内存设置为系统默认大小就不会出生僵死的现象了. 当时因为服务器内存48G,系统默认虚拟内存大小也是48G, 觉得太占硬盘空间, ...

  9. 图形界面编程成就了C++

    听有人说C#.VB比C++好是因为做界面方便还算傻得可爱,听有人说用C++做数值计算而不屑于做界面可就对不起咱C++的恩人了.这我可要说道说道. 想当年C++刚出江湖,名门出身,自立门派,想抢Obje ...

  10. SYN6101型 RS485子钟

    SYN6101型  RS485子钟 产品概述 SYN6101型RS485子钟是由西安同步电子科技有限公司精心设计.自行研发生产的一套以通过RS485总线复接或串行与母钟连接的子钟,接收母钟发送来的时间 ...