虽然基本结构:Series、DataFrame,但实际学的时候要熟练掌握各种常用函数,本文重点还是数据简单处理。
线性的数据结构, 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
先附一篇博客,很全,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函数:打印数据的统计信息