文章目录
- Pandas 总结
* - 基本数据类型
– - 利用Pandas进行数据分析
–
Pandas 总结
import pandas as pd
基本数据类型
介绍
与 ndarray 数据类型不同,这两种数据类型都是 可变的
- Series:带标签的一维数组,标签名是 index
- DataFrame:带标签且大小可变的二维表格结构
Series
构造方法:
pd.Series(
data=None,
index=None,
dtype=None,
name=None,
copy=False,
fastpath=False,
)
- data:列数据
- 数据可以是任意数据类型
- 字典作为参数,字典键作为index,值作为填充的列数据;若指名index,则会按照index中字典键的顺序去填充;若对应数据没有该键,则用NaN 填充。
data = {'a':1, 'b':2, 'c':3}
pd.Series(data)
'''
a 1
b 2
c 3
dtype: int64
'''
data = {'a':1, 'b':2, 'c':3}
pd.Series(data, index = ['a', 'c', 'c'])
'''
a 1
c 3
c 3
dtype: int64
'''
- index:行索引(DataFrame中的是columns列索引),default = np.arange(n)
- dtype:数据类型
- name:Series 的名字,有了名字的Series作为DataFrame的参数的时候,列名就是它的名字
se = pd.Series(data = [1, 2, 3], index = range(3),name = 'number')
df = pd.DataFrame(se)
df.columns
- 注意:
- Series 是 一列数据
Series的切片操作
- 可以像ndarray类型的数据一样去切片
- Examples:
- 中括号 里面参数是 index 或者 索引
s = pd.Series([0, 1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e', 'f'])
print(s)
s[0]
s['a']
'''
out:
a 0
b 1
c 2
d 3
e 4
f 5
dtype: int64
0
0
'''
- 参数是切片
- 可以用index值切片
s['a':'e']
'''
out:
a 0
b 1
c 2
d 3
e 4
dtype: int64
'''
+ 也可以用索引切片
s[0:5]
'''
out:
a 0
b 1
c 2
d 3
e 4
dtype: int64
'''
+ 多值索引,列表里边嵌套列表
pos = [0,1,2]
s[pos]
'''
a 0
b 1
c 2
dtype: int64
'''
Series 数学运算
Series 中可以使用numpy的几乎所有函数
obj.function()
s.mean()
s.std()
s.unique()
s.sum()
- 多个Series的相加操作,有所不同:对应index 相加,不匹配用NaN 填充 Series由于 存在行标签,所以会根据两个运算书的标签自动对齐后进行计算。
s = pd.Series([0, 1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e', 'f'])
s[1:] + s[:-1]
'''
out:
a NaN
b 2.0
c 4.0
d 6.0
e 8.0
f NaN
dtype: float64
'''
s.value_count()
可以实现在某列中按值的类别记录个数(一列数据)
DataFrame
构造方法:
pd.DataFrame(
data=None,
index: 'Optional[Axes]' = None,
columns: 'Optional[Axes]' = None,
dtype: 'Optional[Dtype]' = None,
copy: 'bool' = False,
)
- data:可以使用各种数据进行创建
- 二维数组(列表,ndarray)
data = np.array([[1, 2], [3, 4]])
pd.DataFrame(data)
'''
out:
0 1
0 1 2
1 3 4
'''
- 字典 Key 始终是作为 columns
- from 行
d = {'a':1,'b':1,'c':1}
f = {'a':1,'b':1,'d':1}
df = pd.DataFrame(data = [d, f])
df
'''
out:
a b c d
0 1 1 1.0 NaN
1 1 1 NaN 1.0
'''
+ from 列
d = {'one':pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two':pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df
'''
out:
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
'''
DataFrame 中的行列操作
注意:都不是方法,而是一种访问方式 []
访问某一行
df.loc[index_name]
- [] 里面是index名称,或者index列表(获取多个)
- 可以名称切片
df.iloc[index]
- index 索引
- 可以索引切片
访问某一列
df[column_name]
- 可以使用列名,或者列名列表,但是不能用 列名 切片
- 可以用列的索引切片
访问多行
df.loc[ : ] or df.loc[ [ ] ]
df.iloc[ : ] or df.iloc[ [ ] ]
访问多列
df[ : ]
DataFrame常用的属性或方法
属性
df.T
df.axes
df.dtypes
df.empty
df.ndim
df.shape
df.size
df.values
方法
df.head()
df.tail()
利用Pandas进行数据分析
读入数据
data = pd.read_filetype(file_path)
- 返回 DataFrame 类型的数据
- txt 文件 用
pd.read_csv
读取
基本信息
data.info()
- 查看数据类型,列名,行列数,非空值统计
data.describe()
- 数值类型的数据数学信息
- count
- mean
- std
- min,max
- 四个分位点
data.head(n = 5)
- 查看数据的前几行信息,默认五行
data.tail(n = 5)
- 查看数据的前几行信息,默认五行
数据分析
分组
data.groupby(by = )
data.groupby(
by=None,
axis=0,
level=None,
as_index: 'bool' = True,
sort: 'bool' = True,
group_keys: 'bool' = True,
squeeze: 'bool' = <object object at 0x0000024D9F206510>,
observed: 'bool' = False,
dropna: 'bool' = True,
) -> 'DataFrameGroupBy'
key_parameters:
- by = :
- = function:每个index值 会被函数调用
- = ndarray
- = list
- = dict
- axis = :按照 0 (列),1(行)来进行划分
- 0
- 1
- dropna = :If True, and if group keys contain NA values, NA values together
with row/column will be dropped.
使用
返回的是一个‘DataFrameGroupBy’ 的对象
- 对象.数学方法
- sum()
- count() dtype = ‘int’
- mean()
- std()
- 对象.画图方法
- 数据透视表:选择groupby选出的 部分列 作为 横纵坐标画图 (x, y, z)
groupby_df.pivot_table(
values=None,
index=None,
columns=None,
aggfunc='mean',
fill_value=None,
margins=False,
dropna=True,
margins_name='All',
observed=False,
) -> 'DataFrame'
+ values:column_name,选某一列的值作为 z
+ index:column_name,x
+ columns:column_nma,y
+ aggfunc:对 **values** 进行对应的数据处理
- 普通图
groupby_df.plot(x,y,kind = '',title,xticks,yticks,xlim,ylim,xlabel,ylabel)
kind = :可以指名 画图类型,bar,line等等groupby_df.plot.scatter()
groupby_df.plot.bar()
se.value_counts()
- 可以实现在某列中按值的类别记录个数,对于当前问题实现过程相对更简单
排序
按标签排序 df.sort_index(axis = 1,ascending = True)
- 对数据按照 DataFrame 中的 index 进行排序
- axis
- = 1 行
- = 0 列
- ascending:
- = True : 升序
- = False :降序
按实际值排序 df.sort_values(by = [], ascending = True)
- by
- = [columns1, columns2,…]:按照给定的列先后进行分组
- ascending
- = True 升序
- = False 降序
字符串文本函数 series.str.function()
; 统计函数
差分函数 series.pct_change()
协方差函数 series.cov()
相关性函数 series.corr()
数据排名 series.rank()
数据访问
N = 5
df = pd.DataFrame({'X':np.linspace(0, stop = N-1, num = N),
'Y':np.random.rand(N),
'C':np.random.choice(['Low','Medium','High'],N).tolist()})
df
迭代访问
dir(df) 其中一部分
'items',
'iteritems',
'iterrows',
'itertuples',
df.iteritems()
类似字典
for key ,value in df.iteritems():
print(key ,value)
- key
- value
df.iterrows()
for row_index, row in df.iterrows():
print(row_index ,row)
df.itertuples()
for row in df.itertuples():
print(row)
索引 和 选择数据函数
df.iloc()
df.loc()
df.ix()
df.column_name
Original: https://blog.csdn.net/weixin_45743271/article/details/120626667
Author: 名称又重复了
Title: Pandas部分总结
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/743715/
转载文章受原作者版权保护。转载请注明原作者出处!