一维数据结构,包含行索引和数据两个部分.
s = pd.Series([14, 15, 17],index=[u‘张某’, u‘李某’, u‘段某’])
二维数据结构,包含带索引的多列数据,各列的数据类型可能不同
df = pd.DataFrame([[22, u‘北京’, u‘律师’],[26, u‘四川成都’, u‘工程师’],[24, u‘江苏南京’, u‘研究员’]],index=[u‘张某’, u‘李某’, u‘段某’],columns=[u‘年龄’, u‘籍贯’, u‘职业’])
从CSV文件读取.
pd.read_csv() |
# 参数:file,文件路径;sep,分隔符;index_col,用作行索引的一列或者多列;usecols,选择列;encoding,字符编码类型,通常为’utf-8’.
从制表符分隔文件读取,如TSV.
pd.read_table()
从Excel文件读取.
pd.read_excel()
从SQL表或数据库读取.
pd.read_sql()
从JSON格式的URL或文件读取.
pd.read_json()
从剪切板读取.
pd.read_clipboard()
写入CSV文件
df.to_csv()
# 参数:file,文件路径;sep,分隔符;columns,写入文件的列;header,是否写入表头;index,是否写入索引.
写入Excel文件
df.to_excel()
写入SQL表或数据库
df.to_sql()
写入JSON格式的文件
df.to_json()
写入剪切板
df.to_clipboard()
唯一值
s.unique()
唯一值及其计数
s.value_counts()
```.
前n行数据
```python
df.head(n)
后n行数据
df.tail(n)
随机采样的n行数据
df.sample(n)
行数和列数
df.shape
样本数、数据类型和内存占用等信息
df.info()
描述性统计信息汇总
df.describe()
df.astype({u‘年龄’:‘int8’}) # 数据类型转换.
df.index = [‘a’, ‘b’, ‘c’] # 修改行索引.
df.columns = [‘a’, ‘b’, ‘c’] # 修改列索引.
df.set_index() # 设置某一列为索引.
df.reset_index() # 重置索引为自然数索引.
df.reindex(index, columns=[‘A’, ‘B’]) # 根据index和columns进行重排.
df.rename(index, columns={‘A’:‘B’})# 对行索引或列标签进行修改.
df.sort_index(axis=0) # 按照行索引进行排序.
df.sort_values(‘A’, axis=0) # 根据“A”列值进行升序排列.
df.sort_values(‘A’, ascending=False) # 根据“A”列值进行降序排列.
df.rank(axis=0) # 返回元素在所属列的排名.
df.index = [[u‘法务部’, u‘研发部’, u‘研发部’], [u‘张某’, u‘李某’, u‘段某’]] # 创建层次化索引.
df.index.names = [u‘部门’, u‘姓名’]# 创建行索引名称.
df.swaplevel(0, 1) # 互换行索引级别.
df.reorder_levels([1, 0]) # 重排行索引级别.
df.xs(u‘年龄’, level=1, axis=1) # 根据某一层级进行交叉选择.
df.sum() # 求和.
df.mean() # 均值.
df.max() # 最大值.
df.min() # 最小值.
df.median() # 中位数.
df.quantile([0.25, 0.75]) # 分位数.
df.std() # 标准差.
df.var() # 方差.
df.cumsum() # 累和.
df.mode() # 众数.
df.corr() # 相关系数矩阵.
df.cov() # 协方差矩阵.
df.corrwith() # 不同Pandas对象之间的相关性.
df.isnull() # 判断每个元素是否为缺失值.
df.notnull() # 判断每个元素是否为非缺失值.
df.fillna({‘A’:1, ‘B’:22}) # 多列缺失值填补.
df.dropna() # 删除缺失值所在行/列.
# 参数:axis,操作轴,默认为横向,即丢弃行;how,丢弃方式;subset,考虑部分行和列;thresh,非缺失值数量下限.
pd.merge(left, right) # 类数据库的数据融合操作.
#参数:how,融合方式,包括左连接、右连接、内连接(默认)和外连接;on,连接键;left_on,左键;right_on,右键;left_index,是否将left行索引作为左键;right_index,是否将right行索引作为右键.
left.join(right) # 在索引上的数据融合操作
left.combine_first(right)
#在数据融合的同时(行索引和列索引取并集),使用right中的值填补left中相应位置的缺失值.
pd.concat([df1, df2]) # 轴向连接多个DataFrame.
df.stack() # 将数据的列“旋转”为行.
df.unstack() # 将数据的行“旋转”为列.
s.map() # 利用函数或映射进行数据转换.
df.applymap() # 利用函数或映射进行数据转换.
df.replace() # 替换元素值.
df.columns.map(str.upper) # 将列名转换为大写.
df.groupby(‘A’) # 根据“A”列的值进行分组,并返回一个GroupBy对象.
df.groupby([‘A’, ‘B’]) # 根据“A”列和“B”列的值组合进行分组,并返回一个GroupBy对象.
df.groupby(‘A’)[‘B’].mean() # 根据“A”列的值进行分组,并计算每一组“B”的均值.
df.groupby(‘A’).agg(np.mean) # 根据“A”列的值进行分组,并计算每一组中各列的均值.
df.apply(np.mean) # 对DataFrame的每一列求均值.
df.apply(np.mean, axis=1) # 对DataFrame的每一行求均值.
df.pivot_table(index=‘A’, values=[‘B’, ‘C’], aggfunc=mean) # 创建数据透视表,根据“A”列的值进行分组,并计算每一组中“B”和“C”的均值.
pd.cut(s, bins=[0, 5, 10],labels=[‘A’, ‘B’]) # 离散化和面元划分.
pd.qcut(s, 2,
labels=[‘A’, ‘B’]) # 等频离散化.
pd.get_dummies(df, columns=[‘A’],
drop_first=True)
# 对“A”列进行哑变量编码,并去掉第一个编码特征.
通过调⽤多个Pandas⽅法将多个处理过程串联起来.
pd.merge(left, right, how=‘outer’,indicator=True).query(‘_merge == “left_only”’).drop([‘_merge’], axis=1)
# 保留在left中但不在right中的行.
s.str.method
⽮量化字符串⽅法,可跳过缺失值,遇缺失值将不报错.
s.str.lower() # 将所有元素转换为全部小写.
s.str.upper() # 将所有元素转换为全部大写.
s.str.replace() # 替换值.
s.str.split(“ ”).str[0] # 空格分割,并取列表中
的第一个元素.
s.str.split(“ ”).str.get(0) # 空格分割,并取列
表中的第一个元素.
s.str.split(“ ”, expand=True) # 空格分割,并
扩展为多列.
s.str.contains(r‘\d’) # 利用正则表达式判断是否元素包含数字.
s.str.extract(r‘(\d.)’, expand=False) # 利用正则表达式提取每个元素中的数字.
df.plot(kind=‘hist’) # 设置kind参数绘制直方图.
df.plot.line() # 调用对象接口绘制折线图
df.plot.scatter(‘x’, ‘y’) # 绘制x-y散点图.
包 括 图 形:面 积 图df.plot.area; 纵 向 柱 状 图df.plot.bar; 横 向 柱 状
图df.plot.barh; 盒 图df.plot.box; 和 核 密 度 图df.plot.kde; 蜂 巢
图df.plot.hexbin;饼图df.plot.pie.