学习笔记——pandas和df进行数据处理使用笔记(入门篇)

编程入门 行业动态 更新时间:2024-10-23 19:18:57

学习笔记——pandas和df进行<a href=https://www.elefans.com/category/jswz/34/1768995.html style=数据处理使用笔记(入门篇)"/>

学习笔记——pandas和df进行数据处理使用笔记(入门篇)

pandas作为数据处理必备工具包,记录一下学习的坑

pandas默认的处理对象是DataFrame,安装之后加载

目录

一,代码示例意义解读

(1)pd.read_csv,pandas 读取csv文件的各种坑以及常用参数

(2)整个数据集不能装入一台计算机的内存中,因此我们选择前100,000个记录切片

(3)df.head()

 (4)df.isnull().sum()

 4.1python pandas判断缺失值isnull()

 4.2isnull().sum() 将列中为空的个数统计出来

(5) df.fillna()函数,参数method中pad’, ‘ffill’,‘backfill’, ‘bfill’, None取值的几种不同

(6)df ['Sentence#'].nunique(),df.Word.nunique(),df.Tag.nunique()

 (7)df.groupby('Tag').size().reset_index(name='counts')

groupby 

(1)按照关键字分类,如果不使用mean().sum()函数的话,是一个group类型的数据 

(2)对group数据再进行函数操纵apply(),agg()apply()应用所有数据

(3)agg()应用某一列 

(8)df.drop('Tag',axis= 1)

(9)特征转换

(9)np.unique( )的用法

 (10)python中的tolist()


一,代码示例意义解读

import pandas as pd
#整个数据集不能装入一台计算机的内存中,因此我们选择前100,000个记录,
# 并使用外存学习算法(Out-of-core learning algorithm)来有效地获取和处理数据。
df= pd.read_csv('D:\120.python\Scripts\数据集\第一次数据集\ner_dataset.csv',encoding="ISO-8859-1")#ISO-8859-1默认为英文编码ISO-8859-1改成gbk支持中文
df= df [:100000]
df.head()#df.head()会将excel表格中的第一行看作列名,并默认输出之后的五行,在head后面的括号里面直接写你想要输出的行数也行,比如2,10,100之类的。
df.isnull().sum()
#数据预处理
#我们注意到“Sentence#”列中有很多NaN值,我们用前面的值填充NaN。
df= df.fillna(method='ffill')
df ['Sentence#'].nunique(),df.Word.nunique(),df.Tag.nunique()#(4544,10922,17)

(1)pd.read_csv,pandas 读取csv文件的各种坑以及常用参数


df= pd.read_csv('D:\120.python\Scripts\数据集\第一次数据\ner_dataset.csv',encoding="ISO-8859-1")

读取xls和csv

pd.read_csv()  ; pd.to_csv();
 pd.read_excel() ; pd.to_excel()
 

所以说这行的意思就是读取中文数据
pd.read_csv(‘xx.csv’,header=None)

  1. header:若第一行列名,需要设置header=None 重置列名,设置names=[‘A’,‘B’,‘C’]
  2. sep:设置分隔符,比如以\t为分隔符需要设置,sep=’\t’
  3. encoding:编码格式,比如encoding=‘utf-8’,经验是在windows环境下使用excel改过的csv,会变成gbk编码。ISO-8859-1默认为英文编码ISO-8859-1改成gbk支持中文
  4. na_filter:是否检查丢失值(空字符串或者是空值)。对于大文件来说数据集中没有空值,设定na_filter=False可以提升读取速度。
  5. error_bad_lines:读取文件报错:expect 7 fields, saw 8之类的,如果这行不重要的话,跳过这一行,可设置error_bad_lines=False
  6. skip_blank_lines :如果为True,则跳过空行;否则记为NaN。
  7. parse_dates:将某几列解析成date类型,可设置parse_dates=[‘A’]
  8. keep_date_col : 如果连接多列解析日期,则保持参与连接的列。默认为False

(2)整个数据集不能装入一台计算机的内存中,因此我们选择前100,000个记录切片

df= df [:100000]

(3)df.head()

df.head()会将excel表格中的第一行看作列名,并默认输出之后的五行,在head后面的括号里面直接写你想要输出的行数也行,比如2,10,100之类的。

df是DataFrame的缩写,这里表示读取进来的数据,比如,最简单的一个实例:

import pandas as pd
df = pd.read_excel(r'C:\Users\Shan\Desktop\x.xlsx')
print(df.head())

excel表:

输出结果:

 (4)df.isnull().sum()

 4.1python pandas判断缺失值isnull()

元素级别的判断,把对应的所有元素的位置都列出来,元素为空或者NA就显示True,否则就是False

python pandas判断缺失值一般采用 isnull(),然而生成的却是所有数据的true/false矩阵,对于庞大的数据dataframe,很难一眼看出来哪个数据缺失,一共有多少个缺失数据,缺失数据的位置。

先赞后看,原文写的很好

转自 

df.isnull().any()则会判断哪些”列”存在缺失值,其中一组中有一个true就是true

 4.2isnull().sum() 将列中为空的个数统计出来

(5) df.fillna()函数,参数method中pad’, ‘ffill’,‘backfill’, ‘bfill’, None取值的几种不同


原文链接:

(6)df ['Sentence#'].nunique(),df.Word.nunique(),df.Tag.nunique()

 结果是:

(4544,10922,17)
#我们有4,544个句子,其中包含10,922个独特单词并标记为17个标签。

 (7)df.groupby('Tag').size().reset_index(name='counts')

groupby 

 df2

      data1     data2 key1 key2
0 -0.511381  0.967094    a  one
1 -0.545078  0.060804    a  two
2  0.025434  0.119642    b  one
3  0.056192  0.133754    b  two
4  1.258052  0.922588    a  one

(1)按照关键字分类,如果不使用mean().sum()函数的话,是一个group类型的数据 

df2 = pd.DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})<br>
df2.groupby('key1').mean()data1     data2
key1                   
a     0.067198  0.650162
b     0.040813  0.126698
df2.groupby(['key1','key2']).mean()data1     data2
key1 key2                   
a    one   0.373335  0.944841two  -0.545078  0.060804
b    one   0.025434  0.119642two   0.056192  0.133754

(2)对group数据再进行函数操纵apply(),agg()
apply()应用所有数据

df2.groupby('key1').apply(np.mean)data1     data2
key1                   
a     0.067198  0.650162
b     0.040813  0.126698

(3)agg()应用某一列 

  group2=df2.groupby('key1')
group2
<pandas.core.groupby.DataFrameGroupBy object at 0x000001C6A964D518>
group2['data1'].agg('mean') 
key1
a    0.067198
b    0.040813

我有一个数据框df,我使用它的几列到groupby:

df['col1','col2','col3','col4'].groupby(['col1','col2']).mean()

以上面的方式,我几乎得到了我需要的表(数据框)。 缺少的是包含每个组中行数的附加列。 换句话说,我有意思,但我也想知道有多少数字被用来获得这些手段。 例如,在第一组中有8个值,在第二组中有10个,依此类推。

简而言之:如何获取数据帧的分组统计信息?

对于不熟悉此问题的人,在更新版本的pandas中,您可以在groupby对象上调用describe()以有效地返回常见统计信息。 有关更多信息,请参阅此答案。

快速回答:

获取每组行数的最简单方法是调用.size(),返回Series:

df.groupby(['col1','col2']).size()

通常您希望此结果为DataFrame(而不是Series),因此您可以执行以下操作:

df.groupby(['col1', 'col2']).size().reset_index(name='counts') 

如何按对象计算大熊猫组中的行数? - 问答 - 云+社区 - 腾讯云 (tencent) 

参考这篇文章

(8)df.drop('Tag',axis= 1)

df.drop(‘列名’, axis=1)代表将‘列名’对应的列标签(们)沿着水平的方向依次删掉。 

理解:简单的来记就是axis=0代表往跨行(down),而axis=1代表跨列(across),作为方法动作的副词。换句话说:使用0值表示沿着每一列或行标签\索引值向下执行方法;使用1值表示沿着每一行或者列标签模向执行对应的方法。
轴axis用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。 

(9)特征转换

v= DictVectorizer(sparse= False)
X= v.fit_transform(X.to_dict('records'))
from sklearn.feature_extraction import DictVectorizerdict_vec = DictVectorizer(sparse=False)# #sparse=False意思是不产生稀疏矩阵X_train = dict_vec.fit_transform(X_train.to_dict(orient='record'))
X_test = dict_vec.transform(X_test.to_dict(orient='record'))
print(dict_vec.feature_names_)#查看转换后的列名
print(X_train)#查看转换后的训练集
['age','pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=female', 'sex=male']
[[31.19418104  0.          0.          1.          0.          1.        ][31.19418104  1.          0.          0.          1.          0.        ][31.19418104  0.          0.          1.          0.          1.        ]...[12.          0.          1.          0.          1.          0.        ][18.          0.          1.          0.          0.          1.        ][31.19418104  0.          0.          1.          1.          0.        ]]

原pclass和sex列如下:

full[['Pclass','Sex']].head()Pclass	Sex
0	3	male
1	1	female
2	3	female
3	1	female
4	3	male

即pclass和sex两列分类变量转换为了数值型变量(只有0和1),age列数值型保持不变,达到了机器学习的识别目的。 

(9)np.unique( )的用法

该函数是去除数组中的重复数字,并进行排序之后输出。

 (10)python中的tolist()

更多推荐

学习笔记——pandas和df进行数据处理使用笔记(入门篇)

本文发布于:2024-03-03 23:58:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707720.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据处理   学习笔记   笔记   入门篇   df

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!