Python数据处理笔记
Python有多容易忘记, 如果不整理, 过一段时间就完全重新学了. 所以借着这一些练习, 把自己学过的东西记录并总结, 才方便日后回顾.
import pandas as pd
另外可以导入Series和DataFrame,因为这两个经常被用到:
from pandas import Series, DataFrame
DataFrame
生成DataFrame的若干种方式
从文件中来: 最常见的方式
手动生成: 可以根据自己的喜好来定制数据
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
df = pd.DataFrame(data)
一种比较漂亮的生成方式, 里面用的state, year, pop
都成为了columns
:
>>> frame.columns
Index(['pop', 'state', 'year'], dtype='object')
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
5 3.2 Nevada 2003
但是这种方式通常只能适合于比较小的Dict, 如果有定制好的数据集, 那么就要通过dict()
生成各种各样的dictionary对象. 对dict的操作在这里按下不表
获取DataFrame的信息
可以把DataFrame当成一个Excel表格来看待
df2.index
看对列序号:
df.columns
每一列的名字
隐藏index
columns
, 只看df2
的values
:
print(df2.values)
"""
array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],
[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']], dtype=object)
"""
describe()
:数据总结, 返回数据的mean, std, count
等
df2.describe()
"""
A C D
count 4.0 4.0 4.0
mean 1.0 1.0 3.0
std 0.0 0.0 0.0
min 1.0 1.0 3.0
25% 1.0 1.0 3.0
50% 1.0 1.0 3.0
75% 1.0 1.0 3.0
max 1.0 1.0 3.0
"""
df.T
:翻转数据的行列,比较常用的地方如果要对行进行索引
sort_index
进行排序并输出:
print(df2.sort_index(axis=1, ascending=False))
数据中的类型用 dtype
这个属性:
print(df2.dtypes)
索引的方式
逗号分开行与列, 如果要分别选取多个行和多个列, 使用['col1','col2'] 分别列出需要的行列
1. ['col']
字典的访问方式和对象访问方式
data['Colorado']
字典的访问方式 []
内为要访问的Key
data.Colorado
对象访问方式
注意: 这两种方式都不可以使用数字访问
2. iloc
根据行列的位置
data.loc['Colorado', ['two', 'three']]
data.loc[:,['two']] #选出two所在的列
3. iloc
根据行列的名称
同iloc
实现相同的效果:
data.iloc[2, [3, 0, 1]]
4. ix
混合两种方式
Index 和 Column的选取/重命名
第一个参数为内容,
groupedDF = pd.DataFrame(grouped, columns=['User Id', 'Rating'] , index= [for i in range (len(grouped))])
df.groupby()
根据'Pclass'
求平均
data.groupby('User Id')['Rating'].mean()
data.groupby('User Id').mean()['Rating']