微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas

# -*- coding:UTF-8 -*-
__autor__ = 'zhouli'
__date__ = '2019/2/13 21:38'


import pandas as pd
firsts = pd.DataFrame(
    {
        'val1': 1.0,
        'val2': [1, 2, 3, 4],
        'val3': ["test", "trains", "tony", "stark"],
        'val4': 'iron_man'
    }
)
print(firsts)

>>>
   val1  val2    val3      val4
0   1.0     1    test  iron_man
1   1.0     2  trains  iron_man
2   1.0     3    tony  iron_man
3   1.0     4   stark  iron_man

可以看到的是

①pandas会自动帮我们做好了填充,非常方便,但是这也是一个容易出错的点

认会生成认索引

③这种方式是以列的形式赋值

 

 

pandas的数据结构:

Pandas的基本数据结构是Series和DataFrame,顾名思义,Series就是序列,类似一维数组

DataFrame则是相当一张二维表格,类似二维数组,他的每一个列都是一个Series。为了定位Series中的元素,pandas提供了index对象,每一个Series都会带一个对应的index,用于标记不同的元素,index的内容不一定是数字,可以是字母,中文等,类似sql的主键。

类似的DataFrame相当于多个带有同样index的series的组合(本质是series的容器),每个Series都带有唯一的表头,用来标识不同的Series

pd.Series([1,2,3,4])
pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd'])
pd.Series({'a':1, 'b':2})

Series是将list和dict结合在一起的新数据类型,

就相当于把array多增加一个标签索引

st=pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd'])
st[['a', 'b']]  # 花式索引
st['a']  # 标签索引
st[0]  # 下标索引

这样做的好处是什么定位到一个表格中将列名作为标签索引

另外Series认是标签索引!

举个栗子:

sr = pd.Series(np.arange(20))
sr2 = sr[10:].copy()

sr是什么?

sr2是什么?

那么sr2[10]结果为10

因为[]内认是按照标签索引来解释,那如果就想用认的索引怎么办?

sr2.iloc[]代表使用下标(当有冲突的时候)

sr2.loc[]代表使用标签

 

Series---数据对齐

 

 

 

 

那么如何按照行的形式来建立数据呢?

pd.DataFrame(
    data=None,  # 数据列表,字典格式时直接同事提供变量名
    columns=None  # 变量名列表
)
import pandas as pd

data = [
    [1, "test"], [2, "trains"], [3, "tony"], [4, "stark"],
    ]
colums = ["val1", "val2"]
rows = pd.DataFrame(
    data=data,  # 数据列表,字典格式时直接同事提供变量名
    columns=colums  # 变量名列表
)
print(rows)
>>>
   val1    val2
0     1    test
1     2  trains
2     3    tony
3     4   stark

 

利用pandas读入文本格式数据文件

import pandas as pd

pd.read_csv(
    filepath_or_buffer='',  # 要读入文件的路径
    sep=',',  # 列分隔符
    header='infer',  # 指定数据中第几行作为变量名
    names=None,  # 自定义变量名列表
    index_col=None,  # 将会被用作索引的列名,多列时只能使用序号列表
    usecols=None,  # 指定只读入某些列,使用索引列表或名称列表均可
    # (0, 1, 3), ["名次", "学校名称", ""]
    encoding=None,  # 读入文件的编码方式
    na_values=''  # 指定将被读入为缺失值的数值列表,认下列数据被读入
    '''
    '','#N/A','#N/A N/A', '#NA', 'NULL'等
    '''
)
pd.read_table()  # 更加通用的文本读取命令

读取CSV格式的文件,也是可以通用于文本文件的读取

那这两个方法有什么读取文本的命令基本上一致,最大的区别的地方在于sep

read_csv是',',而另一个是sep='\t',即tab符号

举个栗子:

这个是中国高校排行榜

high_school = pd.read_csv("high_school.csv", encoding='gbk')
print(high_school)

结果如下:

 

如果不适用read_csv,而是采用read_rable

结果就是这样

但是注意的是,table是按照\t来的,所以read_table的读取方式是整行读取,所以没有分割

 

数据的导入与导出:

1,Excel文件的读入:

high_school = pd.read_excel("high_school1.xlsx", sheet_name="full")
print(high_school)

sheet_name写full或者不写都是一样的,因为认都是读取第一个sheet

当sheet_name写0的时候也是相当于读取第一个sheet

 

 

读入统计软件数据集:

例如读SAS/Stata:

pd.read_sas()

pd.read_stata()

 

 

读入数据库文件

①读入数据表

pd.read_sql

pd.read_sql(
    sql='',  # 需要执行的sql语句/要读入的表名名称
    con='',  # sqlAlchemy连接引擎名称
    index_col=None, # 将被用作索引的列名称
    columns=None,  # 将提供表名称时,需要读入的列名称list
)
pd.read_sql(
    sql='basic',  # 表名为basic
    con=eng,  # sqlAlchemy连接引擎名称eng
)

数据的导入导出:

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐