Finding clusters of homogenous data points is an important task in data analysis. The aim of cluster analysis is to divide a given dataset into clusters of homogenous data. One of the main problems is that sometimes clusters are not well separated. That is, there are data points lying between them, which can be seen as belonging (partially) to different clusters. Fuzzy cluster analysis is a method to handle such data points. It is based on the idea to introduce membership degrees between 0 and 1 which are meant to describe how well a data point belongs to a cluster. Following a brief introduction to fuzzy cluster analysis which reviews the basic ideas and the most important algorithms, I focus on three aspects of fuzzy clustering, which are very important for successful data analysis: In the first place, I propose an extension of possibilistic fuzzy clustering. This extension is based on cluster repulsion and considerably improves the clustering results in cases in which the clusters are not well separated. Secondly, I study how missing values can be handled in fuzzy clustering. Since discarding data with missing values throws away valuable information, I concentrate on approaches based on iterative imputation, available case estimation of the cluster parameters and the introduction of a class specific probability for missing values. Thirdly, I examine how to handle class information in fuzzy cluster analysis, where a class can consist of several clusters. The main problem is to cleanly separate the classes, which I try to solve by introducing a penalty for clusters comprising several classes and a class repulsion term.