pandas的基本功能与常用的数学统计方法

python高级应用与数据分析学习笔记 13

1、pandas的基本功能

1)数据文件读取 文本数据读取

2)索引、选取和数据过滤

3)算术运算和数据对齐

4)函数的应用和映射

5)重置索引

2、数据文件读取 文本数据读取

2.1 直接读取文本数据

data01.csv文件

name,age,source
张伊曼,27,90
张巧玲,27,90
张诗诗,27,90
张思思,27,90

data02.txt文件

张伊曼:27:90
张巧玲:27:90
张诗诗:27:90
张思思:27:90
import numpy as np
import pandas as pd

df = pd.read_csv('data01.csv')                       #默认sep=','
print("data01.csv文件的原始数据==========================")
print(df)

df = pd.read_csv('data01.csv',header=None)           #去除表头
print("data01.csv文件的去表头数据==========================")
print(df)

df = pd.read_csv('data02.txt',sep=':',header=None)   #根据文本数据更换sep
print("data02.txt.txt文件的原始数据==========================")
print(df)
image.png

2.2 代码生成数据文件然后在读取

#1.2 代码生成数据文件然后再读取
df0 = pd.DataFrame(np.arange(18).reshape((6, 3)))
df0.columns = ['张伊曼', '张巧玲', '张诗诗']
print("df0=============================")
print(df0)
df0.to_csv('df0.csv', index=False)

print("df1=============================")
df1 = pd.read_csv('df0.csv')
print(df1)
image.png
image.png

注意:当设置index的值,就会变成如图的样子:

#1.2 代码生成数据文件然后再读取
df0 = pd.DataFrame(np.arange(18).reshape((6, 3)))
df0.columns = ['张伊曼', '张巧玲', '张诗诗']
df0.index = ['a1', 'a2', 'a3','a4', 'a5', 'a6']
print("df0=============================")
print(df0)
df0.to_csv('df0.csv')

print("df1=============================")
df1 = pd.read_csv('df0.csv')
print(df1)
image.png

image.png

3、数据过滤获取

3.1 大概知识点介绍

1}、pandas中缺省值NaN的4种处理方法:1 isnull 2 notnull 3 dropna 4 fillna

2}、df.dropna() 默认丢弃只要包含nan数据的行 axis=1则是丢弃列 how='any'默认 如果设置how='all'则表示全部为nan才丢弃

3}、df.fillna() 默认填充数据,用法与df.dropna()参不多

3.2 dropna()的用法

# 2、数据过滤
#2.1 dropna()的用法
dict0 = {
    '语文': [90, 80, 60],
    '数学': [99, 70, 89],
    '外语': [98, 10, 75],
    '物理': 90
}
df0 = pd.DataFrame(dict0)
df0['数学'][1] = np.nan

print("df0原数据===============================")
print(df0)

print("df0.dropna()===============================")
print(df0.dropna())       #默认删除有缺省值所在的行

print("df0.dropna(axis=1)===============================")
print(df0.dropna(axis=1)) #默认删除有缺省值所在的列

print("df0.dropna(how='all',axis=1)===============================")
df0.ix[1] = np.nan
print(df0.dropna(how='all')) #当所有元素是缺省值的时候 才删除

print("df0.dropna(how='any',axis=1)===============================")
df0['外语'][0] = np.nan
print(df0.dropna(how='any')) #当所有元素有一个是缺省值的时候 才删除
image.png

3.3 fillna() 的用法

# #2.2 fillna()的用法
df0 = pd.DataFrame(np.random.random((7, 3)))
df3 = df0
print('df0的原始数据=================================')
print(df0)

df0.ix[:4, 1] = np.nan
print('df0.ix[:4, 1] = np.nan 数据=================================')
print(df0)

print('df0.ix[:2, 2] = np.nan 数据=================================')
df0.ix[:2, 2] = np.nan
print(df0)

print('将所有的缺省的数据填充为1=================================')
print(df0.fillna(1))

print('将所有的缺省数据分别填充为1和2=================================')
print(df3.fillna({1: 1, 2: 2}))
image.png

image.png

3、Series与DataFrame数据去重的方法

unique方法用于获取Series或DataFrame某列中的唯一值数组(去重数据后的数组)
value_counts方法用于计算一个Series或DataFrame某列中各值的出现频率
isin方法用于判断矢量化集合的成员资格,是否在里面,可用于选取Series中或DataFrame列中数据的子集

3.1 Series
# 数据去重
s1 = pd.Series(['a', 'b', 'c', 'b', 'a'])
print("s1的原始数据==============================")
print(s1)

print("数据去重方法:s1.unique()==============================")
print(s1.unique())   #注意:s1.unique()返回的类型也是Series

print("单个值出现的个数:s1.value_counts()['a']==============================")
print(s1.value_counts()['a'])

print("值是否存在的方法:s1.isin(['a', 'b'])==============================")
print(s1.isin(['a', 'b']))
image.png
3.2 DataFrame

···
df0 = pd.DataFrame(np.random.randint(10, 16, (3, 3)), columns=['张伊曼', '张巧玲', '张诗诗'])
print("df0==============================")
print(df0)

print("df0.ix[0].unique()==============================")
print(df0.ix[0].unique())

print("df0['张伊曼'].unique()==============================")
print(df0['张伊曼'].unique())

print("df0['张伊曼'].value_counts()==============================")
print(df0['张伊曼'].value_counts())

print("df0.ix[0].value_counts()==============================")
print(df0.ix[0].value_counts())

print("df0['张伊曼'].isin([11])==============================")
print(df0['张伊曼'].isin([11]))
···


image.png

4、pandas常用的数学统计方法

count 计算非NA值的数量
describe 针对Series或DataFrame列计算统计
min/max/sum 计算最小值 最大值 总和
argmin argmax 计算能够获取到最小值和最大值的索引位置(整数)
idxmin idxmax 计算能够获取到最小值和最大值的索引值
quantile 计算样本的分位数(0到1)
mean 值的平均数
median 值的中位数
mad 根据平均值计算平均绝对距离差
var 样本数值的方差
std 样本值的标准差
cumsum 样本值的累计和
cummin cummax 样本的累计最小值 最大值
cumprod 样本值的累计积
pct_change 计算百分数变化
相关系数.corr() 以及 协方差cov()


image.png

基本示例:

df0 = pd.DataFrame(np.random.randint(1,10,(4, 3)))
print("df0===============================")
print(df0)

print("df0.describe()===============================")
print(df0.describe())

print("df0.median()===============================")
print(df0.median())

print("df0.var()===============================")
print(df0.var())

print("df0.std()===============================")
print(df0.std())

print("df0.corr()===============================")
print(df0.corr())

print("df0.cov()===============================")
print(df0.cov())

image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容