Python--pandas库的基础应用(更新ing)

虽然基本结构:Series、DataFrame,但实际学的时候要熟练掌握各种常用函数,本文重点还是数据简单处理。

逻辑框架如下:
Python--pandas库的基础应用(更新ing)_第1张图片


一、Series

线性的数据结构, series是一个一维数组,常见属性有 values, index, name, dtype

Pandas 会默然用0到n-1来作为series的index, 但也可以自己指定index( 可以把index理解为dict里面的key )
也可以用dictionary构造一个series
其中选择数据也支持切片操作

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
#索引列index默认为0,1,2,3
x1=Series([1,'kk',3,5.67])
x2=Series(data=[1,2,3,4],
          index=['a','b','c','d'])
print(x1)
0       1
1      kk
2       3
3    5.67
dtype: object
print(x2)
a    1
b    2
c    3
d    4
dtype: int64
---------------------------------------------
print(x1[3])
print(x2['c'])
5.67
3
#多项提取,注意有一个中括号
print(x1[[1,3]])
1      kk
3    5.67
dtype: object
#切片操作,左闭右开
print(x1[1:3])
1    kk
2     3
dtype: object
---------------------------------------------
x={
     'a':1,'b':2,'c':None}
x3=Series(x)
print(x3)
a    1.0
b    2.0
c    NaN
dtype: float64

Series也有运算操作,只要重叠部分会正常运算,其余NaN

import pandas as pd
import numpy as np
s = pd.Series([9, 'zheng', 'beijing', 128, 'usa', 990], index=[1,2,3,'e','f','g'])
Sum = s[1:3] + s[1:3]
sum1 = s[1:4] + s[1:4]
sum2 = s[1:3] + s[1:4]
sum3 = s[:3] + s[1:]
print(Sum)
print(sum1)
print(sum2)
print(sum3)
#输出:
2        zhengzheng
3    beijingbeijing
dtype: object
2        zhengzheng
3    beijingbeijing
e               256
dtype: object
2        zhengzheng
3    beijingbeijing
e               NaN
dtype: object
1               NaN
2        zhengzheng
3    beijingbeijing
e               NaN
f               NaN
g               NaN
dtype: object

下面举一些实操中的例子

中位数

t={
     'a':1,'b':4,'c':6,'d':5,'e':9,'f':None}
x=pd.Series(t)
#范围查找
print(x[x>4])
c    6.0
d    5.0
e    9.0
dtype: float64
#中位数
print(x.median())
5.0
#判断是否大于中位数
print(x[x>x.median()])
a    False
b    False
c     True
d    False
e     True
f    False
dtype: bool

二、DataFrame

先附一篇博客,很全,pd.DataFrame()函数解析

DataFrame基本属性有 values、columns、index

之后复制粘贴吧,我再研究研究


三、引入数据

导入数据常常会出现两种语法错误
可以复习一下 Python3十大经典错误及解决办法

1、
SyntaxError: EOL while scanning string literal

EOL = End Of Line error(翻译:行尾误差)
问题原因:通常是字符串两端的引号未正确匹配、成对造成的。
检查代码
1.是否有单引号、双引号、或三引号没有闭合(‘’只有开头没有闭合)。
2.如果是多行字符串需要使用三引号。单引号、双引号、引起来的字符串文字不能跨越多行。

2、
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape

引用的文件有中文输入、引号等而不能解码位置2-3的字节(即开头的引号)

解决措施:开头加个 r 就可以了

x=pd.read_excel(r"C:\Users\Administrator\Desktop\临时文件\19级全员信息表.xlsx")

上面是引入本地excel表,也可以应用一些网站的数据

x = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")

具体读入数据时可能还有不同形式和细节,上面只列举两种情况


四、数据简单处理

基础的用于索引的函数:

x=pd.read_excel(r"C:\Users\Administrator\Desktop\临时文件\19级全员信息表.xlsx")
#默认前5行
print(x.head())
#指定前3行
print(x.head(3))
#默认后5行
print(x.tail())
#返回全部索引
print(x.columns)
#查询指定行
print(x.iloc[[1,3,5]])
#打印第1到2行
print(x.loc[1:2])
#返回行列数
print(x.shape)
#查询指定的列
print(x[['学号','姓名']].head())
#查询指定的行和列
print(x.loc[1:4,['学号','姓名']])
#查询指定范围内的信息
print(x[(x['出生日期']<'2000')&(x['性别']=='男')].head())

其中有些细节还是有必要提的:

pandas的iloc,loc
多了一个i,多了个整数(integer)的界定。
利用loc函数的时候,当index相同时,会将相同的Index全部提取出来,优点是:如果index是人名,数据框为所有人的数据,那么我可以将某个人的多条数据提取出来分析;缺点是:如果index不具有特定意义,而且重复,那么提取的数据需要进一步处理,可用.reset_index()函数重置index
iloc比较简单,它是基于索引位来选取数据集,0:4就是选取 0,1,2,3这四行,左闭右开。
应用层面:
用的loc比较多,找指定位置。如果仅仅是选取固定的几行,用iloc更好。
Pandas中loc和iloc函数用法详解(源码+实例)
类似的还有
Pandas中at、iat函数详解
等等

Python中不会设无意义的函数,理解、对比、区别更有助于掌握。

神奇的describe函数:打印数据的统计信息

你可能感兴趣的:(Python学习,python,pandas)