全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
2842 3
2020-04-10

Pandas常用数据结构



Series:

⭐由一组数据以及一组与之对应的数据标签(即索引)组成。
⭐可以通过pandas.Series来创建Series,每个Series可以看成是DataFrame的一个列。
·出处:Python3智能数据分析

DataFrame:
⭐DataFrame是pandas基本数据结构,类似于数据库中表或者EXCEL中的表格数据格式。
⭐DataFrame既有行索引,也有列索引,可以将其看成是多个Series构成的。
·出处:Web API接口参考

Series类

通过pandas.Series来创建Series数据结构。

pandas.Series(data,index,dtype,name)
上述参数中,data可以为列表,array或者dict。
上述参数中,index表示索引,必须与数据同长度,name代表对象的名称。

代码如下:

import pandas as pd
import numpy as np

#创建series对象

series1 = pd.Series

( [2.8,3.01,8.99,8.59,5.18] )

series1

type(series1)


series1 = pd.Series([2.8,3.01,8.99,8.59,5.18],
                    index=['a','b','c','d','e'],
                   name='This is a series')

series1   #行索引

series = pd.Series(np.array([2.8,3.01,8.99,8.59,5.18]),
                   index=['a','b','c','d','e'])
series
#创建序列的样例,基于字典创建
series4= pd.Series({'北京':2.8,'上海':3.01,'广东':8.99,'江苏':8.59,'浙江':5.18})
series4

Series常用属性
values:返回Series对象所有元素。
index:返回索引.

dtypes:返回数据类型.

shape:返回Series数据形状.

ndim:返回对象的维度.

size:返回对象的个数。

DataFrame类

通过pandas.DataFrame来创建DataFrame数据结构。

pandas.DataFrame(data,index,dtype,

columns)
上述参数中,data可以为列表,array或者dict。
上述参数中,index表示行索引,columns代表列名或者列标签。

代码如下:

import pandas as pd
import numpy as np

list1 = [['张三', 21,'男'],['李四', 20,'女'],['王二', 19,'女']]

list1

df1=pd.DataFrame(list1,columns=['name','age','gender'])
df1

#字典
df2=pd.DataFrame({'name':['张三','李四','王二'],
                  'age':[21,20,19],
                  'gender':['男','女','女']})
df2

#数组结构创建
array1=np.array(list1)
array1
df3=pd.DataFrame(array1,columns=['name','age','gender'],
                index=['a','b','c'])
df3

df2.values
df2.shape
df2.dtypes
df2.columns.tolist()
df2.ndim
df2.size
df3.index.tolist()

[color=rgba(255, 255, 255, 0)]1

数据获取和保存
pandas内置了十几种数据源读取函数常见的就是CSV和excel。
pandas读取出来的数据直接是数据框格式,方便后续的数据处理和分析。

可以快速的将数据保存为csv或者excel格式。
参数较多,可以自行控制,但很多时候用默认参数。
读取csv时,注意编码,常用编码为utf-8,jbk,gbk2312等。

读写文本文件

文本文件读取文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。
csv是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)。

⭐使用 read_table来读取文本文件:

pandas.read_table(filepath_or_buffer,
sep='\t',header='infer',names=None,
index_col=None,dtype=None,
engine=None,nrows=None)

⭐使用 read_csv函数来读取csv文件:
pandas.read_csv(filepath_or_buffer,
sep=',',header='infer',names=None,
index_col=None,dtype=None,
engine=None,nrows=None)

下面我们看一个具体的例子:
os.chdir()  :方法用于改变当前工作目录到指定的路径。
chdir()方法语法格式如下:
os.chdir(path)
---path要切换到的新路径

import os
os.chdir(r'D:\QQ接收文件\python 学习资料\Python数据分析与应用\data')
import pandas as pd

pd.read_csv('D:/QQ接收文件/python 学习资料/Python数据分析与应用/data/meal_order_info.csv', encoding='gbk')


成功读取csv文件。


参数名称说明
filepath接收string。代表文件路径。无默认。
sep接收string。代表分隔符。read_csv默认为","   ,   read_table默认为制表符 '[Tab]"  。
header接收int 或 sequence 。表示将某行数据作为列名。默认为infer,表示自动识别。
names接收array。表示列名。默认为None。
index_col接收int、sequence或False。表示索引列的位置,取值为sequence则代表多重索引。默认为None。
dtype接收dict。代表写入的数据类型(列名为key,数据格式为 values )。默认为None。
engine接收c 或者python。代表数据解析引擎。默认为c


read_table 和 read_csv 函数中的sep参数是指定文本的分隔符,如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片。
header参数是用来指定列名的,如果是None则会添加1个默认的列名。
encoding代表文件的编码格式,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等。如果编码指定错误数据将无法读取,IPython解释器会报解析错误。

文本文件的储存

文本文件的存储和读取类似,结构化数据可以通过pandas中的 to_csv

函数实现以csv文件格式存储文件.

DataFrame.to_csv(path_or_buf=None,sep=',',na_rep='',columns=None,

header=True,index=True,

index_lable=None,mode='w',

encoding=None)

参数名称说明
path_or_buf接收string。代表文件路径。无默认。
sep接收string。代表分隔符。默认为"," 。
na_rep接收string。代表缺失值。默认为""   .
columns接收list。代表缺失值。默认为None。
header接收Boolean,代表是否将列名写出。默认为True。
index接收Boolean,代表是否将行名(索引)写出。默认为True。
index_lable接收sequence。表示索引名。默认为None。
mode接收特定string。代表数据写入模式。默认为w。
encoding接收特定string。代表存储文件的编码格式。默认为None。

以上是关于csv文件读取的方式。


数据筛选
方法:

基础索引方式,就是直接引用。

ioc[行名称索引或者条件,列索引名称或者标签]
iloc[行索引位置,列索引位置]

增删改查和条件查询。

熟练掌握drop(labels,axis,inplace=True)的用法。

END



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-4-10 13:47:09
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-10 17:04:50
因为这是我第一次在这个论坛发帖子,所以是直接用专用的微信公众号编辑器上面写的,直接粘贴过来了,所以有些图案在这里不能显示。以后有机会再发帖的话,我再试试,争取编辑得好看一点。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-11 15:53:01
thanks for sharing
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群