Pandas学习笔记(一)

本文是Pandas学习笔记的第一部分,主要介绍Pandas的环境、数据结构(Series和DataFrame)的创建,包括从文件创建数据,以及基本功能如数值统计计算。文中详细解释了如何创建Series和DataFrame,以及不同情况下数据索引的处理方式。
摘要由CSDN通过智能技术生成

Pandas环境

测试环境使用的是Anaconda。

Pandas数据结构

Pandas处理以下两个数据结构:(panel已弃用,将在以后的版本中删除。)
1、series
注释:Series是pandas中暴露给我们使用的基本对象,它是由相同元素类型构成的一维数据结构,同时具有列表和字典的属性,字典的属性由索引赋予。
- Series:有序,有索引
- list: 有序,无索引
- dict: 无序 ,有索引

创建series

pd.Series(data=None, index=None, name = None)

  • data:多种类型;
  • index:索引信息;
  • name:对data的说明,一般在和DataFrame、Index互相转换时才需要。

data无索引
- 如果 data 为 ndarray(1D) 或 list(1D),那么其缺少 Series 需要的索引信息;
- 如果提供index,则必须和data长度相同;
- 如果不提供 index,那么其将生成默认数值索引 range(0, data.shape[0])。

import numpy as np
import pandas as pd
data = [1,2,3]
index = ['a','b','c']
tmp = pd.Series(data=data,index=index,name='ss')
s

out:
a 1
b 2
c 3
Name: sss, dtype: int64
data有索引

  • 如果 data 为 Series 或 dict ,那么其已经提供了 Series 需要的索引信息,所以 index 项是不需要提供的;
  • 如果额外提供了 index 项,那么其将对当前构建的Series进行 重索引(增删)(等同于reindex操作)。值为NaN
d = {
   1:'a',2:'b',3:'c'}
st = pd.Series(data=d,name='tmp')
st
index = [1,2,4]
st = pd.Series(data=d,index=index,name='tmp1')
st

out:
1 a
2 b
4 NaN
Name: tmp1, dtype: object
2、 DataFrame

DataFrame由具有共同索引的Series按列排列构成(2D),是使用最多的对象。

创建DataFrame

pd.DataFrame(data=None, index=None, columns=None)

data无 行索引,无 列索引

  • 如果 data 为 ndarray(2D) or list(2D),那么其缺少 DataFrame 需要的行、列索引信息;
  • 如果提供 index 或 columns 项,其必须和data的行 或 列长度相同;
  • 如果不提供 index 或 columns 项,那么其将默认生成数值索引range(0, data.shape[0])) 或 range(0, data.shape[1])。
data = np.array([[1,2,3],[4,5,6]] )
index = ['a','b']
columns = ['A','B','C']
df = pd.DataFrame(data=data, index = index,columns=columns)
df
A	B	C

a 1 2 3
b 4 5 6

data无 行索引,有 列索引

  • 如果data为 dict of (ndarray(1D) or list(1D))所有ndarray或list的长度必须相同。dict的key为DataFrame提供了需要的columns信息,缺失index;
  • 如果提供 index 项,必须和list的长度相同; 如果不提供 index,那么其将默认生成数值索引range(0, data.shape[0]));
  • 如果还额外提供了columns项,那么其将对当前构建的DataFrame进行 列重索引。值为:NaN
data = {
    'A' : [1,4], 'B': [2,5], 'C':[3,6] }
index = ['a','b']
columns = ['A','B','D']
df = pd.DataFrame(data=data, index = index, columns = columns)
df

out:
A B D
a 1 2 NaN
b 4 5 NaN

data有 行索引,有 列索引

  • 如果data为 dict of (Series or dict),那么其已经提供了DataFrame需要的所有信息;
  • 如果多个Series或dict间的索引不一致,那么取并操作(pandas不会试图丢掉信息),缺失的数据填充NaN;
  • 如果提供了index项或columns项,那么其将对当前构建的DataFrame进行重索引(reindex,andas内部调用接口)。
data = {
    'A' : {
    'a':1, 'b':4}, 'B': {
   'a':2,'b':5}, 'C':{
   'a':3, 'c':6} }
df = pd.DataFrame(data=data)
df

out:
A B C
a 1.0 2.0 3.0
b 4.0 5.0 NaN
c NaN NaN 6.0

由文件创建

pd.read_csv(filepath_or_buffer, sep=’,’, header=‘infer’, names=None,index_col=None, encoding=None )

  • filepath_or_buffer:路径和文件名不要带中文,带中文容易报错。
  • sep: csv文件数据的分隔符,默认是’,’,根据实际情况修改; header:如果有列名,那么这一项不用改;
  • names:如果没有列名,那么必须设置header = None, names为需要传入的列名列表,不设置默认生成数值索引;
  • index_col:list of (int or name),传入列名的列表或者列名的位置,选取这几列作为索引
  • encoding:根据文档编码来确定,如果有中文读取报错,试试encoding = ‘gbk’。

pd.read_excel(io, sheetname=0, header=0, index_col=None, names=None)

  • header:如果有列名,那么这一项不用改;
  • names:如果没有列名,那么必须设置header = None,names为列名的列表,不设置默认生成数值索引;

Pandas基本功能

series基本功能

序号 属性或方法 说明
1 axes 返回轴标签列表
2 dtype 返回数据类型
3 size 返回series大小
4 empty 如果series为空,返回true
5 ndim 返回底层数据的维数,默认:1
6 values 返回series的值,类型为ndarray
7 head 返回前N行数据
8 tail 返回后N行
data = pd.Series(data=np.random.randn(10))
print('data:')
print(data)
print('-'*50)
print("axes:")
print(data.axes)
print('-'*50)
print('dtype:')
print(data.dtype)
print('-'*50)
print('empty:')
print(data.empty)
print('-'*50)
print('ndim:')
print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值