pandas df中有几个数组_Python数据分析之Pandas入门

一、概述

之前我们讲了Python数据分析中基础的工具包Numpy,今天我们来讲讲Pandas,由于Pandas的内容也比较多,本文主要还是讲解一些入门的基本知识。

二、详细说明

同样的我们来引入使用的库

import 

2.1、数据结构

在介绍之前,我们先来说说Pandas中常用的两种数据结构:Series、DataFrame。

Series的基础知识

创建Series

import pandas as pd
# 创建series(通过数据创建)
pd.Series(["a","b","c","d"])
# 创建series(通过字典创建)
dict = {
    "a":"python",
    "b":"java",
    "c":"php"
}
pd.Series(dict)
# 创建series(通过自定义index创建)
pd.Series(["java","php","python","jsp"],index=["a","b","c","d"])

基本属性、操作、方法

ser_data = pd.Series(["java","php","python","jsp"],index=["a","b","c","d"])
# 获取series的索引
ser_data.index
# 获取series的值
ser_data.values
# 通过索引取值
ser_data["a"]
ser_data[["a","b"]]
# 判断是否有缺失值
ser_data.isnull()
ser_data.notnull()
DataFrame的基础知识

创建DataFrame

pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),columns=['a', 'b', 'c'],index=["one","two","three"])

注:可以自定义索引名称和列名,同样也可以使用字典类型创建

基本属性、操作、方法

# 显示前五行/后五行
df.head()/df.tail()
# 获取某列的值名
df.columns
# 获取某列的值
df["a"]
df.a
df1[["a","b"]]  # 选取多列
# 根据轴标签索引
df.loc["one":"three"]
# 根据整数索引
df.iloc[0:1]
# 获取某几行几列
df1.iloc[[0,2],[1,2]]

2.2、基本功能

重新索引
# 参数:index、method、fill_value(不存在时填充值),columns表示更改列名
df.reindex(["one","two","hh","gg","ff"])
# 重新设置索引,其中原来的索引作为值放入DataFrame中
df.reset_index()
丢弃指定轴上的项
# 丢弃轴上的某行()
df.drop(index_name)
# 丢弃某列
df.drop(column_name, axis=1/"columns")
索引

针对Series

# 标签切片
ser["a":"d"]、ser[["a","c","e"]]
# 索引切片
ser[2:4]
# 布尔索引   
ser[ser>0]

针对DataFrame

# 选取列   
df["a"]、df[["a","c","d"]]
# 选取行  
df.loc["dd"]、df.iloc[1]、df.iloc[1,2]、df.loc[["dd","cc"]]
# 选取某行某列
df.loc["dd",["a","c"]]
df.iloc[[1,2,3],[4,5,6]] 
# 选取前三行
df[:3]
# 布尔索引
df[df["a"]>3]
函数映射
np.abs(df)
# 将函数应用到由各列或行所形成的一维数组上(应用到行上则axis=1)
df.apply(function, axis=1)
# 作用于df中的每个元素
df.applymap(func)   
# series中的map函数,应用于每个元素中 
df["a'].map(func)
排序
# 按照索引排序(按升降序排序)
obj.sort_index(axis=1, ascending=False)
# 按照值排序
frame.sort_values(by=['a', 'b'],ascending=False))
排名
# 排名情况,相同的取均值
ser.rank()
# 原始排名情况
ser.rank(method='first')
# 按照降序排列
ser.rank(ascending=False, method='max')  
# 对于dataframe多了一个axis参数
df.rank(axis=....) 

2.3、汇总和计算描述

Pandas对象拥有一组常用的数学和统计方法

汇总函数

主要统计一些常用的汇总函数:如平均值、标准差、方差、最大最小值、计数等

0785c4c2858ccef1be37d3c710b221b9.png
相关系统和协方差
# 计算相关系数
df["a"].corr([""b])   
# 计算协方差
df["a"].cov(df["b"]) 
# DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵
df.corr()/df.cov()
# 利用DataFrame的corrwith方法,你可以计算其列或行跟另一个Series或DataFrame之间的相关系数
df.corrwith(df.IBM)
唯一值及计数
# 统计唯一值
obj.unique()
# 统计各个元素出现次数(默认从大到小排序)
obj.value_counts()
# value_counts还是一个顶级pandas方法,可用于任何数组或序列
pd.value_counts(obj.values, sort=False)
# series中的值是否在序列中,返回布尔数组
ser.isin(['b', 'c'])   

64d9136b82b4393b37c1775fb6a058da.png

2.4、读取数据

在我们进行数据分析时候,需要先读取数据,一般情况下数据都保存在CSV文件、excel文件、数据库中,本文也主要介绍这三种常用的文件读取,对于其他的大家可以参考参考《利用python进行数据分析》。

fe9a0c34db60645f1d393be46185ab4d.png
CSV文件操作

文件的读操作

import pandas as pd
pd.read_csv(path="",sep=",",header=None,index_col="",skiprows=[0,2,4])

其中path表示路径、sep表示分隔符、header表示是否显示头部信息、index_col表示建立索引(其中:index_col='message '将message列定义为索引,index_col=["a","b"] 建立多层索引)、skiprows=[0,2,4] 表示跳过0,2,4行数据,还有其他的一些参数,大家可以在使用中查看提示即可。

文件的写入操作

df.to_csv()

参数如下:index 表示是否加索引、header 表示是否有标头、columns=['a','b','c']定义csv文件头部名称、sep='/' 表示分隔符

excel文件操作

文件读操作为

pd.read_excel('examples/ex1.xlsx', 'Sheet1')

可以看到基本的参数为文件名、sheet页名

同样,写入操作为

df.to_excel("excel_name.xlslx","sheet_name")
数据库读取数据

我们以常用的mysql数据库为例,首先需要我们按照pymsql的库用来连接数据库(直接pip安装即可),读取操作为:

import pymysql
db = pymysql.connect(host="服务器ip(本地使用localhost即可)",port=3306,user='用户名',password='数据库密码',db="数据库名")
pd.read_sql("select * from taggit_tag",db)

结果如下:

8b78f60ef6e7306e32de9f714721e5a7.png

操作比较简单直接使用pd.read_sql(),其中第一个参数为sql语句,第二个为连接的数据库

json数据读取

对于json库笔者使用较多的就是对爬取数据的json格式解析了,本文简述json库的常用操作

具体说明如下:

import json
json.loads()   # 将JSON字符串转换成Python形式
json.dumps()   # 将Python形式转化成JSON字符串
pd.read_json()   # 读取json格式的文件
df.to_json    # 将数据从pandas输出到JSON

三、总结

本文主要是介绍了pandas的一些入门知识,都是对pandas数据结构的一些操作,后面讲解了使用pandas文件中数据的一些操作(基本上能满足我们的日常工作,如需读取其他文件格式,可以自行google),本文是pandas的一个基础入门总结,后续会整理Pandas的一些进阶的知识。

更多Pandas操作:

Python数据分析之数据清洗和准备

Python数据分析之数据规整

Python数据分析之数据聚合与分组

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值