网站程序安全管理,在线包车网站建设,网站 优化 教程,数商云电子商务网站建设Pandas处理以下三个数据结构 - 系列(Series)----一维ndarray 特点#xff1a;带有标签#xff0c;可以使用标签作为索引#xff0c;大小不能改变#xff0c;内部数据可以改变。 属性#xff1a;与NumPy类似#xff0c;多了一个轴标签axis lables 数据…Pandas处理以下三个数据结构 - 系列(Series)----一维ndarray 特点带有标签可以使用标签作为索引大小不能改变内部数据可以改变。 属性与NumPy类似多了一个轴标签axis lables 数据帧(DataFrame)---二维ndarray 特点带标签可以同行列标签索引尺度可变数据可变面板(Panel) 特点面板是具有异构数据的三维数据结构。在图形表示中很难表示面板这些数据结构构建在Numpy数组之上这意味着它们很快。 考虑这些数据结构的最好方法是较高维数据结构是其较低维数据结构的容器。 例如DataFrame是Series的容器Panel是DataFrame的容器。 1.对象的创建数组 字典 标量值或常数 import pandas as pd
import numpy as nps pd.Series([1,3,5,np.nan,6,8])print(s) 输出 0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64 通过传递numpy数组使用datetime索引和标记列来创建DataFrame dates pd.date_range(20180701, periods7)
print(dates)print(--*16)
df pd.DataFrame(np.random.randn(7,4), indexdates, columnslist(ABCD))
print(df) 输出 DatetimeIndex([2018-07-01, 2018-07-02, 2018-07-03, 2018-07-04,2018-07-05, 2018-07-06, 2018-07-07],dtypedatetime64[ns], freqD)
--------------------------------A B C D
2018-07-01 -0.500163 0.032670 -1.026652 -0.444624
2018-07-02 0.870395 -1.879662 0.476651 0.546444
2018-07-03 -0.182999 -0.497964 0.840211 0.256168
2018-07-04 1.130527 -0.664251 -0.226294 1.660457
2018-07-05 -1.304568 0.204915 0.366062 1.905667
2018-07-06 0.605275 0.356298 -0.561465 -0.000841
2018-07-07 0.226876 0.998272 0.592386 0.306725 2.查看数据 x.head()可以查看顶部数据 x.tail()可以输入参数查看指定个数的底部数据 df1 pd.DataFrame([22,24,54,65,76,88,98], columnslist(A))
print(df1.head())
print(-------------- * 10)
print(df1.tail(3)) 输出 A
0 22
1 24
2 54
3 65
4 76
------------------------------------------------------------------------------------A
4 76
5 88
6 98 3.x.describe()描述显示数据的快速统计摘要参考以下示例代码 dates pd.date_range(20180701, periods7)
df pd.DataFrame(np.random.randn(7,4), indexdates, columnslist(ABCD))
print(df.describe()) 输出 A B C D
count 7.000000 7.000000 7.000000 7.000000
mean -0.051137 -0.290501 -0.308145 -0.287636
std 0.720711 1.084754 0.946105 0.615045
min -0.766295 -1.789795 -1.962022 -1.262667
25% -0.658085 -1.213707 -0.778745 -0.468529
50% -0.286046 0.302139 0.020762 -0.379909
75% 0.496656 0.476699 0.207962 -0.100779
max 1.017243 0.928164 0.925811 0.767738 4.排序 1标签索引的排序----sort_index(axis1,ascendingFalse) 其中ascending默认为True,升序排序 2元素单列排序----sort_valuesby‘B’ 默认会按所在列进行升序排序 5.选择系列元素 通过【】使用 值得注意的是利用dataframe时做切片用的标签边界可以取到而作为下标的右边界是取不到的。 1按标签选择loc /at 按下标选择iloc/iat print(df.loc[dates[0]]) 输出 A 1.320921
B 0.522823
C 0.340569
D -1.911398
Name: 2017-01-01 00:00:00, dtype: float64 2通过标签选择多轴其中处也可以写行标签 print(df.loc[:,[B,D]]) 输出 B D
2017-01-01 0.522823 -1.911398
2017-01-02 -0.354351 -1.719314
2017-01-03 -0.166968 -0.623292
2017-01-04 -1.198105 0.824853
2017-01-05 -0.829653 0.310548
2017-01-06 -0.964786 0.051597 3布尔索引 也可以根据isin()的参数条件进行过滤使用参考教程。 print(df[df.A0]) 输出 A B C D
2017-01-01 1.320921 0.522823 0.340569 -1.911398
2017-01-03 0.991224 -0.166968 0.840899 -0.623292
2017-01-04 0.240294 -1.198105 0.021427 0.824853
2017-01-06 0.683117 -0.964786 -0.159696 0.051597 5.1列的选择 df[列名] 2列的添加df[列名]df.Serices[数组] 3列的删除del df[列名] 6.1行的选择 df[]切片、loc标签索引 2行的添加df.appenddf系列 3行的删除df.drop索引 7.迭代 for col in df:print (col) 输出 A
B
C
D 表示如果只是迭代df对象而非他的迭代器迭代则只会输出dataframe的列名。 1所以迭代列应该为 for key,value in df.iteritems():print (key,value) 2迭代行为 for row_index,row in df.iterrows():print (row_index,row) 3itertuples()方法将为DataFrame中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值而剩余的值是行值。 注意 - 不要尝试在迭代时修改任何对象。迭代是用于读取迭代器返回原始对象(视图)的副本因此更改将不会反映在原始对象上。 7.分组和聚合 GroupBy/ Agg 1任何分组(groupby)操作都涉及原始对象的以下操作之一。它们是 - 分割对象应用一个函数结合的结果在许多情况下我们将数据分成多个集合并在每个子集上应用一些函数。在应用函数中可以执行以下操作 - 聚合 - 计算汇总统计转换 - 执行一些特定于组的操作过滤 - 在某些情况下丢弃数据 df.groupby(列名).groups 或 grouped df.groupby(列名)for name,group in grouped:print (name)print (group) get_group()方法可以选择一个组 2聚合函数为每个组返回单个聚合值。当创建了分组(group by)对象就可以对分组数据执行多个聚合操作。 一个比较常用的是通过聚合或等效的agg方法聚合。 grouped df.groupby(列名1)
print (grouped[列名2].agg(np.mean)) 3转换 分组或列上的转换返回索引大小与被分组的索引相同的对象。因此转换应该返回与组块大小相同的结果。 print (grouped.transform(score)) 4过滤 过滤根据定义的标准过滤数据并返回数据的子集。filter()函数用于过滤数据。 filter df.groupby(Team).filter(lambda x: len(x) 3)print (filter) 8.可视化 df pd.DataFrame(np.random.randn(10,4),indexpd.date_range(2018/12/18,periods10), columnslist(ABCD))df.plot() bar或barh为条形hist为直方图boxplot为盒型图area为“面积”scatter为散点图 import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import random
df pd.DataFrame(np.random.randn(10,4),indexpd.date_range(2018/12/18,periods10), columnslist(ABCD))
df.plot()
plt.show() 输出 df pd.DataFrame(np.random.rand(10,4),columns[a,b,c,d])
df.plot.bar()
plt.show() 输出 其余图形类似上面的方法各种图形请参考Matplotlib官网详细介绍会在下一篇博客请关注留言。转载于:https://www.cnblogs.com/qianshuixianyu/p/9255556.html