<>Pandas数据分析常用方法

<>1、读取数据pd.read()

* 指定索引列
*
eg1:
# index:指定索引,columns:指定列名 pd.DataFrame(np.arange(12,24).reshape(3,4),index=['a'
,'b','c'],columns=['w','x','y','z'])

*
eg2:
catering_sale = "catering_sale.xls" #
读取数据,指定"日期"列为索引列(DataFrame所有的Series共用一个列索引) data = pd.read_excel(catering_sale,
index_col='日期')

*
names : 列名数组,缺省值 None,用于读取数据的指定列名

eg1:
catering_sale = "catering_sale.xls"
data = pd.read_excel(catering_sale, names=[‘date’,‘sale’])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMTqDTNL-1593225260019)(D:\我\MyBlog\Pandas数据分析常用方法.assets\image-20200624181257685.png)]
## 2、 按行索引iloc与loc ```python data2=pd.DataFrame(data1,columns=('a','b','c'))
#columns定义字段 data2 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28
<>2.1 iloc

*
取指定单行多列
data2.iloc[2] a 12 b 14 c 16 Name: 2, dtype: int32
*
iloc[start:end],索引[开始:结束],左闭右开
data2.iloc[1:4] a b c 1 6 8 10 2 12 14 16 3 18 20 22
*
指定行,列取到一个数字
data2.iloc[2,2] #[行,列] 16
*
不能直接取字段,报取值错误
data2.iloc[2,'c'] #[行,列] #ValueError: Location based indexing can only have
[integer, integer slice (START point is INCLUDED, END point is EXCLUDED),
listlike of integers, boolean array] types
*
可以用切片来取指定行列
data2.iloc[2:3,0:] a b c 2 12 14 16
<>2.2 loc

*
取第指定单行行,多列,与iloc一样
data2.loc[2] a 12 b 14 c 16 Name: 2, dtype: int32
*
loc[start:end],索引[开始:结束],左闭右闭–>与iloc不同
data2.loc[1:4] a b c 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28
*
不能像iloc一样直接取指定行,报类型错误
data2.loc[2,3] ##[行,列] 报错 #TypeError: cannot do label indexing on <class
'pandas.core.indexes.base.Index'> with these indexers [2] of <class 'int'>
*
可以去特定行和列,得到指定得一个数字
data2.loc[2,'c'] 16
*
取指定data3指定行,指定列,有字段
data3=data2.loc[1:4] data4=data3[['a','b']] print(data4) print(type(data4))
#类型DataFrame a b 1 6 8 2 12 14 3 18 20 4 24 26 <class
'pandas.core.frame.DataFrame'>
*
取data3指定行单列,有字段,类型DataFrame
data5=data3[['a']] print(data5) print(type(data5)) a 1 6 2 12 3 18 4 24 <class
'pandas.core.frame.DataFrame'>
*
取data3指定行单列,没有字段,类型Series
data6=data3['a'] print(data6) print(type(data6)) 1 6 2 12 3 18 4 24 Name: a,
dtype: int32 <class 'pandas.core.series.Series'>
<>2.3 总结

1.loc

通过行标签索引行数据
例:loc[n]表示索引的是第n行(index 是整数)
loc[‘d’]表示索引的是第’d’行(index 是字符)
有行索引可以没有字段取值,但有字段取值前必须得有行索引,
而且行索引只能为标签索引形式来取,不能按切片形式来取。
单取切片形式可以,只是索引为左闭右闭。

2.iloc

通过行索引获取行数据,不能是字符,取索引必须按切片形式来取,不能按标签,这是与loc的不同。索引为左闭右开。iloc也可以取指定行列,只不过得按切片形式索引,不能直接拿标签索引来做。

3.建议

当用行索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc 。

<>3、 Matplotlib绘图

<>1. plot折线图
plt.plot(x,y,S)
*
绘制y对于x的折线图

*
字符串参量S指定绘制时图形的类型、样式和颜色

* 常用:“b”为蓝色,“r”为红色,"o"为圆圈,”-“为实线,”–“为虚线
eg1:
import matplotlib.pyplot as plt x = np.linspace(0,2*np.pi,50) y = np.sin(x) plt
.plot(x,y,"b--")

<>2. pie饼状图
plt.pie(size)
*
size是一个列表,记录各个扇形的面积比列,pie有丰富的参数

eg1:
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs'] # 定义标签 sizes = [15, 30, 45, 10] #
每一块的比例 colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] # 每一块的颜色
explode= [0, 0.1, 0, 0] # 突出显示,这里仅仅突出显示第二块 plt.pie(sizes, explode=explode,
labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90) plt
.axis('equal') # 显示为圆(避免比例压缩为椭圆) plt.show()

<>3.hist条形图
plt.hist(x,y)
*
x 是待绘制直方图的一维数组

*
y是正数,表示均匀分布为y组,也可以是列表,列表各个数字为分组的边界点(即手动指定分界点)。

eg1:
x = np.random.randn(1000) # 1000个服从正态分布的随机数 plt.hist(x,10) plt.show()

<>4.boxplot箱线图
D.boxplot() D.plot(kind='box')
*
一种方法是直接调用DataFrame的boxplot()方法;

*
另一种是调用Series或者DataFrame的plot()方法,并用kind参数指定箱型图(box);

eg1:
x = np.random.randn(1000) # 1000个服从正态分布的随机数 D = pd.DataFrame([x,x+1]).T #
构造两列的DataFrame D.plot(kind='box') # 调用Series内置的绘图方法,用kind参数指定箱型图(box) plt.show()
一种方法是直接调用DataFrame的boxplot()方法;

*
另一种是调用Series或者DataFrame的plot()方法,并用kind参数指定箱型图(box);

eg1:
x = np.random.randn(1000) # 1000个服从正态分布的随机数 D = pd.DataFrame([x,x+1]).T #
构造两列的DataFrame D.plot(kind='box') # 调用Series内置的绘图方法,用kind参数指定箱型图(box) plt.show()

技术
©2019-2020 Toolsou All rights reserved,
MyBatis 新增数据 成功 返回 自增主键ID值用C语言做很简单的飞机游戏苹果不送充填器耳机真为环保?可能还是为了赚钱吧一个名叫“讨火车”的小村子 终于把火车讨来了使用easyPOI导入Excel数据QT:清空指定文件夹内的所有文件及目录json反斜杠问题3种Python数据结构,13种创建方法,这个总结,超赞!访客手机抓取方法改主意!特斯拉开始向欧洲市场交付中国造Model 3